[闲聊] 为什么llvm的效能比gcc差

楼主: flypaper (一直飞)   2019-02-02 19:33:23
肥宅 我翻了几篇文章
好像都说gcc生出来的code效能比较好(也没说为什么
肥宅我实在不懂
这两个是差在哪里
llvm 的pass顺序不是还可以自己调 更有弹性吗
我唯一知道的就是 llvm的暂存器分布是用 linear scan
而不是用理论效能较佳的 graph coloring
有人可以告诉肥宅我吗
作者: alan23273850   2019-02-02 21:49:00
这问题太专业,推一个
作者: Lipraxde (Lipraxde)   2019-02-02 22:09:00
那几篇文章是那几篇?我也想看看,能提供吗?
作者: stupid0319 (征女友)   2019-02-02 22:17:00
llvm的webassembly确实还跟gcc原生程式有一段差距
作者: Lipraxde (Lipraxde)   2019-02-02 23:29:00
可能codegen输了一些吧,那部分还没看完不是很肯定
作者: longlongint (华哥尔)   2019-02-03 00:42:00
ㄖㄨㄍ如果gcc又没弹性效能又差就没人要用了(马后炮XD
作者: alan23273850   2019-02-03 02:24:00
所以原PO如果发现改成graph coloring就能跟gcc比的话是不是就可以生一篇 paper 了ㄋ
作者: suhorng ( )   2019-02-03 04:52:00
你贴的文章结论明明是 "LLVM Clang performance has comea long way over the past few years and is generallyon-par with GCC these days, but as these benchmarkresults show, there still are many cases where theGNU Compiler Collection can offer a measurableadvantage over Clang for the performance of generatedbinaries from C/C++." XD
作者: KanzakiHAria (神崎・H・アリア)   2019-02-03 09:44:00
据我所知 大部分情况clang编译速度和执行效能>>>gccclang没有取代gcc的原因是flag和binary没有通用至少我自己和学长的经验都是这样 能换clang绝对换
作者: suhorng ( )   2019-02-03 13:24:00
没有说吧, 就是说大致在同一个等级, 不过有些 benchmark输. 他没特别去分析原因或看是哪样子类型的程式速度输可能性太多了, 也许是 LLVM 没有某一个特定的最佳化算法, 跑的 pass 顺序跟参数不同导致被最佳化的结果不同不一定后端生机器码的部分
作者: final01 (牛顿运动定律)   2019-02-03 22:03:00
可是我听到做编译器的人都说gcc黑科技比较多,蛮多情况是是比clang+llvm好的吧?
作者: KanzakiHAria (神崎・H・アリア)   2019-02-04 08:45:00
c++11以前我不确定 但是GNU现在人力缺乏到跟不上标准 可能我经验太少吧 我还没遇过gcc换clang变慢的
作者: firejox (Tangent)   2019-02-04 10:09:00
https://godbolt.org/z/pl-A9s gcc 意外的比较会算?
作者: KanzakiHAria (神崎・H・アリア)   2019-02-04 23:23:00
楼上老梗了https://youtu.be/bSkpMdDe4g4?t=3892cpp2017这场有说clang有大量数学base的转换如果GCC是这两年变强 那就是我资讯太落后 抱歉gcc黑科技应该是指直接对cpu优化这件事吧GNU团队针对蛮多cpu做编译的人工加速之类的技巧 这个clang因为要转llvm所以不行使用所以实务上还是要benchmark常用系统硬件reddit.com/r/cpp/comments/9or8s1/llvm_vs_gcc/蛮新的讨论串
作者: firejox (Tangent)   2019-02-05 00:01:00
这只是除法,所以有compile time evaluation 就足够了030
作者: Sidney0503 (Sidney0503)   2019-02-05 22:01:00
那个讨论串看起来是都要混著用了clang-tidy/senertizer/analyer + msvc + gcc
作者: tinlans ( )   2019-02-09 04:54:00
LLVM 后端的最佳化算法还不能共用,少了 GCC RTL 层级的一些最佳化,包括一堆 dirty work 的 combination pass都要各个后端自己手刻,这问题之后会改善。我转行半年了不知道现况,但短期内问题的根本都差不多吧。平台无关的最佳化,LLVM 其实也因为太年轻,很多东西都没有实作出来,光是 loop unrolling 就有 GCC 能展开但是LLVM 无法展开的状况。

Links booklink

Contact Us: admin [ a t ] ucptt.com