V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mq4079
V2EX  ›  C++

关于 C++编译速度的一个测试

  •  
  •   mq4079 · 2019-09-12 11:53:27 +08:00 · 5138 次点击
    这是一个创建于 1900 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试环境

    IDE: clion 系统 ubuntu18.04 使用的代码:含有数个模板头的小工程

    使用 gcc7.3 编译

    | | 完整编译整个项目 | 修改含有模板的.h 文件后编译 |

    | 不使用预编译头 | 14 s | 13 s |

    | 使用预编译头 | 19 s | 12 s |

    使用 gcc9.1 编译

    | | 完整编译整个项目 | 修改含有模板的.h 文件后编译 |

    | 不使用预编译头 | 12 s | 11 s |

    | 使用预编译头 | 18 s | 10 s |

    使用 clang8 编译

    | | 完整编译整个项目 | 修改含有模板的.h 文件后编译 |

    | 不使用预编译头 | 8 s | 8 s |

    | 使用预编译头 | 10 s | 7 s |

    上表结论

    • gcc 版本越新编译速度越快,上面测试项目 9 比 7 快 15%左右
    • 新版 clang 比新版 gcc 编译速度快,上面测试项目快 35%左右
    • 使用预编译头比不使用第一次编译要慢(慢很多),但修改代码再次编译速度要比不使用快(快一点)

    总结: 以后使用 clang8+预编译头方式编译项目

    wutiantong
        1
    wutiantong  
       2019-09-12 11:58:42 +08:00
    这 tm 真是醉了
    nthhdy
        2
    nthhdy  
       2019-09-12 12:09:41 +08:00
    我对 c++ 外行。
    但是感觉选编译器不能只看速度吧,不同编译器恐怕有细微的差别,被坑到就不好了。
    luozic
        3
    luozic  
       2019-09-12 12:14:06 +08:00
    C++编译现在支持编译缓存加速的,可以去搜搜 github。
    across
        4
    across  
       2019-09-12 12:20:16 +08:00
    编译选项、优化等级、代码类、模板展开数量····

    这样没什么对比性啊。
    across
        5
    across  
       2019-09-12 12:21:50 +08:00
    另外才 10 来秒的工程量(不知道什么硬件性能),现在 C++工程里,大部分编他个十来分钟都算少了。
    GM
        6
    GM  
       2019-09-12 12:26:09 +08:00
    这感觉就像是坐进车里踩了几下油门,转几圈方向盘,绕 4S 店走了一圈,就开始发表对车的评价了?
    zhuangzhuang1988
        7
    zhuangzhuang1988  
       2019-09-12 12:42:18 +08:00
    编译 boost 测试吧。
    iyaozhen
        8
    iyaozhen  
       2019-09-12 12:59:17 +08:00
    拿个编一小时的项目再说吧
    augustheart
        9
    augustheart  
       2019-09-12 13:25:44 +08:00
    到目前为止,gcc 编译出来的结果依然整体优于 clang。
    ccpp132
        10
    ccpp132  
       2019-09-12 13:31:44 +08:00   ❤️ 1
    gcc 生成的代码优化效果稍好,支持后端更丰富
    llvm 新,代码组织的好,前端工具多

    现在要提速大部分都是往编译集群,缓存结果的路子上走了。
    mq4079
        11
    mq4079  
    OP
       2019-09-12 13:33:16 +08:00
    忘了说了,i7 8700 make -j12 编译,没开编译优化,为什么不用大项目测呢。因为懒得等。
    testcaoy7
        12
    testcaoy7  
       2019-09-12 13:41:16 +08:00
    好奇 Intel 自家的 C 编译器效率怎么样
    nicebird
        13
    nicebird  
       2019-09-12 14:44:23 +08:00
    十几秒的项目,没什么好对比的
    Gcourage
        14
    Gcourage  
       2019-09-12 15:19:05 +08:00 via iPhone
    编译项目,可以使用 ccache 来提速,空间换时间。
    cmake 也能很好都支持 ccache
    classyk
        15
    classyk  
       2019-09-12 15:25:13 +08:00
    编译结果呢?谁运行最快?谁文件最小?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:23 · PVG 00:23 · LAX 08:23 · JFK 11:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.