c ++ - Massiv afmatning med debug heap

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg oplever et x8 præstationsfald på en middleware, jeg bruger, når du starter den med debuggeren.


Forskellen stammer fra det faktum, at debuggeren bruger debuggenhopen, som er en standardhakke (HeapQueryInformation giver 0), hvorimod en 'standard' -kørsel bruger lavfragmenteringshøjen (HeapQueryInformation giver 2) . [3]


Nu ved jeg, at jeg kan tvinge Visual til at fejle med LFH'en med \_NO\_DEBUG\_HEAP miljøvariablen, men jeg formoder, at der er et kodeproblem i middleware (for mange tildelinger, for mange indirektioner, brug af boost :: shared\_ptr og std :: map 's ...). Så:



  • Er der nogen værktøjer/metoder/noget der kan hjælpe med at identificere denne slags flaskehalse?

  • Jeg kan ikke overbevise middleware firmaet om at refactor deres hele kode =) men er der 'lette' tricks, som brugerdefinerede tildelere (nedmalloc?), som kunne hjælpe?



Tak!

Bedste reference