【发布时间】:2015-09-14 10:54:24
【问题描述】:
我的 c++ 项目是使用 cmake 构建的。有时它运行大约。没有明显原因,速度提高了 3 倍。
当我在一个空的构建文件夹中从头开始构建项目时,在大约 90% 的情况下,所有可执行文件运行缓慢,无论 gcc 标志如何。
当我使用不同的 gcc 标志再次创建慢速项目时,例如-02 而不是 -03,它在大约 90% 的情况下运行得很快。
当我接触到慢速可执行文件的来源时,仅通过添加 cmets,然后再次执行,它在 10% 的情况下运行得很快。
单元测试总是通过。
之前有没有人无缘无故地看到过这种加速?
- Ubuntu14.04
- cmake 版本 2.8.12.2
- GNU Make 3.81
- gcc 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 测试。所有测试都以相同的方式进行,即每个单独的测试块时间在较慢的情况下大约大 3 倍。
- 主要可执行文件进行光子传播(科学射线追踪),一束光子的传播时间以同样的方式影响。
感谢您的宝贵时间。
【问题讨论】:
-
您可能错过了
make clean;你可能会考虑简单地拥有你的(手写的)Makefile(而不是用难以掌握的cmake生成它)