【发布时间】:2011-06-21 09:30:52
【问题描述】:
我正在编写一个相当复杂的应用程序,它大量使用了 STL 容器。该应用程序有一个相对简单的性能敏感部分,它迭代多个std::maps 并执行数千次。测试表明,在禁用检查迭代器(_SECURE_SCL 设置为 0)的情况下编译会导致整个程序的速度几乎提高 2 倍,完全集中在本节中。
但是,我无法在 _SECURE_SCL 设置为 0 的情况下编译应用程序,因为需要链接在启用 _SECURE_SCL 的情况下编译的库,并且混合 _SECURE_SCL 设置会导致问题。此外,我发现在整个应用程序中使用未经检查的迭代器是相当愚蠢的,因为所有性能敏感位都发生在单个屏幕代码中。那无异于把婴儿和洗澡水一起扔出去。
在保持与使用检查迭代器编译的库的兼容性的同时,我必须有哪些选项来选择性地对性能敏感的代码/容器使用未检查的迭代器?
【问题讨论】:
-
感谢格式化帮助!
-
很高兴为您提供帮助。一个好问题应该看起来不错!
标签: c++ performance visual-studio-2008 stl iterator