gpt4 book ai didi

c++ - 性能差异调试与发布

转载 作者:行者123 更新时间:2023-11-30 01:34:01 24 4
gpt4 key购买 nike

我发现各种来源表明,调试版和发布版的 Visual Studio 应该几乎没有性能差异。

我正在使用 Visual Studio 2015 并编写了一个事件驱动状态机框架。在我进行了第一次性能测试之后,由于该框架每秒仅进行大约 13.000 次状态切换,所以出现了问题。

但是,一旦我将其编译为发布版本,我就得到了每秒 150 万个状态切换。这对我来说是一个巨大的增长,但我无法解释这是从哪里来的。

可悲的是,我不能分享我的代码,因为它属于我的公司。

但我发现像这样的 for 循环在发布版本中运行得更快。

for (auto i = 0; i < 2000000; i++)      
my_machine.PushEvent(event);

此外,发行版的内存使用量从大约 255 MB 下降到 67MB。内存被两个队列占用。

我希望这不会被标记为重复,但我想听听一些关于性能差异的意见。

最佳答案

I found various sources that there should be little to no performance difference with the debug and release version of Visual Studio.

这很可能是不正确的或被误解的信息……或者,显然是关于不同语言的信息。如果出现误解,原来的说法可能是调试符号信息对性能没有影响,这是正确的。

无论如何,由 _DEBUG(特定于 Visual Studio)启用或由 NDEBUG(控制断言的标准宏)禁用的额外调试操作确实会产生开销。开销有多大取决于程序的作用。如果它大部分时间都在等待硬盘驱动器或网络,那么可能意义不大。如果它在容器上执行大量操作,那么开销可能会更大。

更显着的性能差异将来自缺乏优化,这些优化在发布版本中启用,而不是在调试版本中启用。

关于c++ - 性能差异调试与发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061839/

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