【发布时间】:2011-08-31 04:12:30
【问题描述】:
我正在分析 MSVC 2005 中的调试构建 c++ 代码,与发布时(1-2 秒)相比,某些代码需要很长时间才能执行(30 多秒)。
我已在编译器选项 (/D _SECURE_SCL=0) 中将 _SECURE_SCL 设置为 0,并在源代码中验证其设置为零。
我从分析器 (AMD CodeAnalyst) 中复制了顶级消费者
- std::_Iterator_base::_Orphan_me 19.74
- std::_Iterator_base::_Adopt 9.57
- std::_Iterator_base::operator= 8.98
- std::_Iterator_base::~_Iterator_base 8.55
- std::_Iterator_base::_Iterator_base 7.37
尝试调试代码并且每次都不得不等待 30 多秒,这有点糟糕,我这里有什么遗漏吗?
更新:
将 #pragma optimize() 包裹在类方法周围并没有太大作用,但定义 /D _HAS_ITERATOR_DEBUGGING=0 会降低发布速度,这些现在是我的顶级分析器命中(这对于函数来说似乎很正常):
- std::_Vector_const_iterator >::operator++ 29.79
- std::_Vector_const_iterator >::operator++ 26.26
- std::_Vector_const_iterator >::operator* 25.74
3 个函数,60 条指令,总计:2666 个样本,显示样本的 81.78%,会话样本总数的 2.76%
感谢您的快速回复!
【问题讨论】:
标签: c++ visual-c++ profiling