Доброе утро. Мы пытаемся использовать пользовательский многопоточный распределитель памяти Google tcmalloc с однопоточным профилем тестирования Windows. Когда мы профилируем тестовую программу, мы наблюдаем много циклов ЦП, затраченных на многопоточные функции _threadhandle и tcmalloc, такие как perftools_pthread_getspecific. Вот пример профиля:
KiFastSystemCallRet
cIntersectingGroupCache :: Процесс
cIntersectingGroupCache :: BruteForceDeduping
cIntersectingGroupCache :: FindIntersection
cDedupe :: AccurateNearCompare
HashMapanonymous namespace ':: do_free_with_callback
станд :: basic_string <голец
tcmalloc :: ThreadCache :: Освобождает
memcmp
HashMap <станд :: basic_string <голец
анонимное пространство имен ':: do_malloc
std :: _ Treeanonymous namespace ':: LibcInfoWithPatchFunctions <0> :: Perftools_delete
анонимное пространство имен ':: cpp_alloc
perftools_pthread_getspecific ????????
tcmalloc :: ThreadCache :: FreeList :: Нажмите
станд :: _ Tree
Возможно ли для нас перестроить новую версию libtcmalloc.dll с дополнительной оптимизацией компилятора директивы препроцессора, которая не выполняет функции потоков, такие как _threadhandle и perftools_pthread_getspecific? Мы используем определение препроцессора NO_THREADS для сборки libtcmalloc.dll, но мы все еще сталкиваемся с двумя ранее названными функциями, связанными с потоками tcmalloc? Спасибо.