gpt4 book ai didi

c++ - 调试代码的运行时间比发布代码长几个数量级

转载 作者:行者123 更新时间:2023-11-30 04:29:07 25 4
gpt4 key购买 nike

我有大量代码在 Visual Studio 的 Debug模式下运行大约需要 5 分钟,在 Release模式下运行大约需要 10 秒。

当我必须在程序末尾调试代码时,这会成为一个巨大的问题,我必须等待太久才能让程序到达断点。

我尝试了序列化,并在调试代码之前使用 boost::serialize 序列化了所有变量,但事实证明反序列化所有这些变量仍然需要一两分钟。

那么是什么给了?我知道在 Debug模式下运行代码时会禁用许多优化和内联内容,但令我印象深刻的是,在 Debug模式下运行代码的时间要长将近 2 个数量级。是否有任何 hack 或程序员用来绕过这个等待时间的东西?我知道有很多程序的计算强度比我的高得多,但我非常怀疑他们会等待 5 分钟只是为了让他们的调试代码到达断点。

最佳答案

I have a large bit of code that takes about 5 minutes to run in debug mode of Visual Studio, and about 10 seconds to run in release mode.

这很正常。

So what gives? I'm aware that many optimizations and inline stuff is disabled when running code in debug mode,

这还不是全部。除了那个 msvc 插入 MANY 完整性检查,尤其是当涉及到 STL 容器时。例如,它会就不兼容的迭代器、std::map 中损坏的排序比较器以及许多其他类似问题向您发出警告。我认为它还能在某种程度上检测到内存损坏、缓冲区溢出、std::vector 的超出范围访问等。这可能很有用,但开销很大。将某个分析器放在上面,您的 10 秒也可能需要 30 分钟才能完成。这也将是正常的。

Are there any hacks or something programmers use to bypass this wait time?

除了使用它代替 #1 excuse ...
您可以在 mingw 上构建代码的调试版本——它不会插入(这种)健全性检查。
您还可以调查源 STL 库并查看哪些宏启用了所有这些功能。它很有可能被禁用。也很有可能在 msdn 的某处记录了所述宏。
您可以尝试为 Debug模式找到替代的 STL 实现。您还可以使用调试信息构建 Release模式并调试它。

关于c++ - 调试代码的运行时间比发布代码长几个数量级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659447/

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