为什么clang使用LLVM比使用LLVM手动更快?

时间:2018-03-11 11:17:29

标签: clang llvm llvm-clang

为什么clang使用LLVM比使用LLVM手动更快?

这是Linux上的真实示例:

clang -O0 prog.c -c -emit-llvm
0.5 s

llc prog.bc
1.3 s

as prog.s -o prog.o
0.1 s

gcc prog.o -o prog -lm
0.04 s

total time: 2.0 s

现在只需在一个命令中执行clang:

clang prog.c -o prog -O0 -lm
total time: 0.7 s

1 个答案:

答案 0 :(得分:1)

当你手工完成时,你有很多中介:prog.bc,prog.s,prog.o。 Clang是一个如何将LLVM用作库的示例,因此它永远不会将任何内容转储到磁盘,直到最后一步(取决于开关,可以是bitcode,汇编代码,目标文件或可执行文件),中间的所有内容都是在记忆中。