【发布时间】:2012-04-09 21:19:30
【问题描述】:
这个问题谈到了在 C 中无法轻易实现的排序功能的优化: Performance of qsort vs std::sort?
与 C++ 相比,是否有更多在 C 中不可能或至少难以实现的编译器优化示例?
【问题讨论】:
-
这与优化无关。它是关于可以轻松表达的抽象同时仍然发出最佳代码。
-
没有什么 (AFAIK) 阻止编译器编写者通过函数指针内联(假设目标在同一个翻译单元中),他们只是选择不这样做,无论出于何种原因。
-
@Oli 仅当他们能够证明函数指针从未更改时,这在编译时可能通常不容易做到(并且对于 qsort 几乎是不可能的)。但可以肯定他们可以——当内联虚拟 valls 时,JVM 基本上做同样的事情,它们只是在那里有一些优势。
-
@Oli: 至少 gcc 和 clang do 通过函数指针内联 - 你只需要注意如何分解代码
标签: c++ c optimization compiler-optimization