gpt4 book ai didi

c++ - MSVC2005 std::_Iterator_base::functions 调试时速度慢

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:19 24 4
gpt4 key购买 nike

我正在分析 MSVC 2005 中的调试构建 C++ 代码,某些代码的执行时间(30 多秒)与发布时的(1-2 秒)相比非常长。

我已在编译器选项 (/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%,总 session 样本的 2.76%

感谢您的快速回复!

最佳答案

如果您关心调试性能,您还应该禁用 _HAS_ITERATOR_DEBUGGING。启用迭代器调试后,会进行大量簿记,以帮助您检测代码中使用无效迭代器或未能正确管理容器和迭代器生命周期的错误。

也就是说,经过检查的调试构建和优化的发布构建之间 30:1 的性能差异听起来非常典型和合理。

关于c++ - MSVC2005 std::_Iterator_base::functions 调试时速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7252482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com