2013-05-27 20 views
11

Sprawdziłem wydajność projektu C++, a wyniki nie są dla mnie tak jasne.
std::_lockit::int() ma ponad 20% ekskluzywnych próbek. Co robi i jak uniknąć nadużywania? Mam wiele rzeczy stworzonych z std::vector, więc istnieje nadzieja, że ​​są one połączone.Co robi std :: _ lockit?

+0

Czy włączyć wszystkie optymalizacje i wyłącz debugowanie? –

+0

Tak Używam/Ox do budowania. –

+3

Cóż, jest to rzecz wewnętrzna specyficzna dla Microsoftu ... może lepiej zapoznać się z instrukcją kompilatora. Nie ma to nic wspólnego ze standardowym C++. –

Odpowiedz

9

_Lockit jest powszechnie używany w implementacji STL przez Microsoft do debugowania iteratorów. W środowiskach produkcyjnych może to być przyczyną znaczących wąskich gardeł wydajności podczas iteracji po kontenerach z dużą liczbą elementów.

Debugowanie iteratory może być wyłączona przez definiowanie makr _HAS_ITERATOR_DEBUGGING i _SECURE_SCL jako 0 w kodzie lub właściwości projektu Visual Studio.

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