gpt4 book ai didi

C++ 可执行文件有时会无缘无故地快 3 倍

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:47 25 4
gpt4 key购买 nike

我的 C++ 项目是使用 cmake 构建的。有时它运行约。无明显原因快 3 倍。

  • 当我在一个空的构建文件夹中从头开始构建项目时,无论 gcc 标志如何,所有可执行文件在大约 90% 的情况下都运行缓慢。

  • 当我使用不同的 gcc 标志再次创建缓慢的项目时,例如-02 而不是 -03,它在大约 90% 的情况下运行速度很快。

  • 当我触及缓慢可执行文件的来源时,仅通过添加注释,然后重新创建它,它在 10% 的情况下运行速度很快。

单元测试总是通过。

以前有没有人看到过这种无明显原因的加速?

  • Ubuntu14.04
  • cmake 版本 2.8.12.2
  • GNU Make 3.81
  • 海湾合作委员会 4.8.4
  • 英特尔 i7-4710MQ

CmakeLists.txt 中的默认值:

set (CMAKE_CXX_FLAGS "-std=gnu++11 -Wall -pedantic -O3 -Idir")

据我所知,加速影响了项目的所有部分。因此我不认为它与包相关。涉及的包:

  • OpenCV
  • OpenMP
  • 谷歌测试

如何测量速度:

  • 单元测试可执行文件在慢速时运行 1200 毫秒,在快速时仅运行 400 毫秒。它涉及大约 180 个仅在 RAM 中的测试和大约 10 个磁盘 IO 测试。所有测试都以相同的方式进行,即在较慢的情况下,每个单独的测试 block 时间大约长 3 倍。
  • 主要可执行程序执行光子传播(科学光线追踪),一束光子的传播时间以相同的方式受到影响。

感谢您的宝贵时间。

最佳答案

gcc 标志 -O2-O3 是为了让代码更快,所以这并不奇怪。接触文件和重建使其更快这一事实可能意味着您的 cmake 没有进行完整的重建。尝试进行手动重建(使用正常的 make)并查看是否一切正常。

关于C++ 可执行文件有时会无缘无故地快 3 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32563031/

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