Я испытываю падение производительности x8 на промежуточном программном обеспечении, которое я использую при запуске с отладчиком.
Разница заключается в том, что отладчик использует кучу отладки, которая является стандартной кучей (HeapQueryInformation
дает 0), тогда как "стандартный" прогон использует кучу с низкой фрагментацией (HeapQueryInformation
дает 2).
Теперь я знаю, что могу заставить Visual выполнить отладку с помощью LFH с помощью переменной среды _NO_DEBUG_HEAP, но я подозреваю, что в промежуточном программном обеспечении есть проблема с кодом (слишком много выделений, слишком много косвенных адресов, использование boost :: shared_ptr и std :: карта ...). Итак:
- Существуют ли какие-либо инструменты / методы / что-нибудь, что может помочь выявить такие узкие места?
- Я никак не могу убедить компанию промежуточного программного обеспечения провести рефакторинг всего своего кода =), но есть ли «простые» приемы, такие как пользовательские распределители (nedmalloc?), Которые могут помочь?
Спасибо!