【发布时间】:2009-08-14 06:05:06
【问题描述】:
我看到很多关于使用 C++ 编译器编译的 C 代码的一般性能的争论 -- 我很好奇是否有任何可靠的实验研究隐藏在所有轶事之下您在网络搜索中发现的火焰战争。我对 GCC 套件特别感兴趣,但任何数据点都会很有趣。 (比较“Hello,World!”的程序集并没有我想要的那么健壮。:-)
我通常假设您使用“嵌入式样式”标志——没有例外或 RTTI。我也不介意知道是否有关于编译时间本身的研究。蒂亚!
【问题讨论】:
-
比较不同的编译器?比较同一编译器的 C 编译与 C++ 编译? (会有区别吗?)什么是“嵌入式”标志?
-
由相同的编译器套件(即 gcc 与 g++)。由于规范差异,有用的优化可能或多或少适用于一种语言的中介表示而不是另一种(或者某些优化可能对一种语言启用,而对另一种语言没有启用)。我提到了两个嵌入式样式标志——那些禁用异常支持的和那些禁用 RTTI 的。
-
如果您编译类似 C 的代码,我看不出这些标志中的任何一个是如何适用的 - 如果您只有 POD,则任何地方都没有析构函数,因此不需要异常处理代码.由于没有虚函数,因此不需要 RTTI,除了编译时解析的
typeid调用 - 如果没有这些,则不需要。 -
@Pavel:也许,我只是认为删除语言运行时的组件只有在它们未被使用时才能提高性能。
-
我越想这个问题,我就越觉得这是一个有趣的问题。并不是说我有答案(甚至不知道有人会如何有效地测试它)。 C++ 的理念是不用为不用的东西买单——我对这个问题的解释是,编译器实际上在多大程度上达到了这个理想?我猜他们做得很好,但这与实际测量不一样。
标签: c++ c performance compiler-construction embedded