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

为什么clang使用LLVM比手动使用LLVM快?,clang,llvm,llvm-clang,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 prog.c -o prog -O0 -lm total time: 0.7 s 当你

为什么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 prog.c -o prog -O0 -lm
total time: 0.7 s

当你手工操作时,你有很多中间人:prog.bc,prog.s,prog.o。Clang是如何将LLVM用作库的一个示例,因此它从不将任何内容转储到磁盘,直到最后一步(根据开关的不同,可以是位代码、汇编代码、对象文件或可执行文件),中间的所有内容都在内存中