Piszę dość złożoną aplikację, która intensywnie wykorzystuje kontenery STL. Aplikacja ma pojedynczą, względnie prostą, wrażliwą na wydajność sekcję, która jest iterowana na wiele różnych std::map
s i jest wykonywana tysiące razy. Testowanie pokazało, że kompilacja z wyłączonymi sprawdzonymi iteratorami jest wyłączona (_SECURE_SCL
ustawiona na 0) powoduje prawie dwukrotne przyspieszenie programu jako całości, całkowicie skoncentrowanego w tej sekcji.Selektywne wyłączanie sprawdzanych iteratorów
Jednak nie mogę skompilować aplikacji z _SECURE_SCL
ustawionym na 0, ponieważ trzeba połączyć z bibliotekami, które zostały skompilowane z _SECURE_SCL
włączonymi i mieszającymi _SECURE_SCL
ustawienia prowadzą do problemów. Poza tym uważam za głupie używanie niezaznaczonych iteratorów w całej aplikacji, gdy wszystkie wrażliwe na wydajność bity występują w jednym ekranie z kodem. Byłoby to równoznaczne z wyrzuceniem dziecka z kąpielą.
Jakie opcje mam do wybiórczego używania niezaznaczonych iteratorów dla kodu/kontenerów wrażliwych na wydajność przy zachowaniu kompatybilności z bibliotekami skompilowanymi ze sprawdzonymi iteratorami?
Dzięki za pomoc formatowania! – drxzcl
Cieszę się, że mogę Ci pomóc. Dobre pytanie powinno dobrze wyglądać! –