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