2013-05-27 4 views
11

Ho verificato le prestazioni del progetto C++ e i risultati non sono così chiari.
std::_lockit::int() ha oltre il 20% di campioni esclusivi. Che cosa fa e come posso evitare di usarlo eccessivamente? Ho creato un sacco di cose con std::vector, quindi c'è la speranza che queste siano connesse.Cosa std :: _ lockit fa?

+0

Hai attivare tutte le ottimizzazioni e debug disabilitare? –

+0

Sì, io uso/Ox per costruire. –

+3

Beh, è ​​una cosa interna specifica di Microsoft ... potrebbe essere meglio consultare il manuale del compilatore. Non ha nulla a che fare con il C++ standard. –

risposta

9

_Lockit è comunemente utilizzato nell'implementazione di STL di Microsoft per il debug degli iteratori. Negli ambienti di produzione, questi possono essere la causa di significativi colli di bottiglia nelle prestazioni mentre si itera su contenitori con un numero elevato di elementi.

Il debug degli iteratori può essere disabilitato definendo le macro _HAS_ITERATOR_DEBUGGING e _SECURE_SCL come 0 nel codice o le proprietà del progetto Visual Studio.

correlati: Unnecessary locking in STL? (Visual C++ Express)