从 gcc 编译的可执行文件的性能优于从 LLVM 编译的可执行文件的性能是否正常?
Is it normal that the performance of executable compiled from gcc better than one compiled from LLVM?
我自己写了一些C代码,然后用LLVM或者gcc编译。
现在,我从两个编译器(LLVM 和 gcc)编译了两个不同的可执行文件,并且 运行 在这两个编译器上编译了 100,000 次。
我发现 gcc 的可执行文件的性能总是比 LLVM 好。
我知道它们是不同类型的编译器,甚至是不同的架构。
但为什么 gcc 在性能上总是优于 LLVM?是什么原因?
所以这是你的主要问题
问题
从gcc编译的可执行文件的性能比从LLVM编译的可执行文件的性能好是正常的吗?
虽然很有趣但显然是一个非常广泛的问题。因为编译器性能取决于很多因素。
- 这在很大程度上取决于您的应用程序。
- 这取决于底层架构和处理器
- .........还有更多因素
除此之外,还有完善的 benchmarks 来验证编译器的性能。一个应用程序二进制文件表现更好不是正确的基准,因此不是确定的结果。
但是,由于应用程序性能(程序性能)受编译器选择的影响,因此在您的情况下,您看到 GCC 性能优于 LLVM 是完全有道理的,但是,它不一定总是发生在每个应用程序上.
为了您的进一步了解,请查看:
Whosebug post Clang vs GCC - which produces faster binaries?
-
我自己写了一些C代码,然后用LLVM或者gcc编译。
现在,我从两个编译器(LLVM 和 gcc)编译了两个不同的可执行文件,并且 运行 在这两个编译器上编译了 100,000 次。
我发现 gcc 的可执行文件的性能总是比 LLVM 好。
我知道它们是不同类型的编译器,甚至是不同的架构。
但为什么 gcc 在性能上总是优于 LLVM?是什么原因?
所以这是你的主要问题
问题
从gcc编译的可执行文件的性能比从LLVM编译的可执行文件的性能好是正常的吗?
虽然很有趣但显然是一个非常广泛的问题。因为编译器性能取决于很多因素。
- 这在很大程度上取决于您的应用程序。
- 这取决于底层架构和处理器
- .........还有更多因素
除此之外,还有完善的 benchmarks 来验证编译器的性能。一个应用程序二进制文件表现更好不是正确的基准,因此不是确定的结果。
但是,由于应用程序性能(程序性能)受编译器选择的影响,因此在您的情况下,您看到 GCC 性能优于 LLVM 是完全有道理的,但是,它不一定总是发生在每个应用程序上.
为了您的进一步了解,请查看:
Whosebug post Clang vs GCC - which produces faster binaries?