【发布时间】:2011-09-09 15:14:04
【问题描述】:
当一个在参数中包含指针的函数被内联时,编译器是否会在优化过程中删除间接?当然,当它有意义时..
这是一个明显的例子:
inline void say_hello (person* p) {
std::cout << "hello " << p->name << std::endl;
}
int main () {
person goldorak;
goldorak.name = "Goldorak";
say_hello(&goldorak);
return 0;
}
这种情况是微不足道的,但如果编译器进行了优化,是否有一些情况不会?
奖励:我在哪里可以获得我的编译器进行的一些“基本”优化的列表?
Ps:我只是好奇
【问题讨论】:
-
为什么不自己比较程序集呢?
-
你问'我在哪里可以得到我的编译器所做的一些“基本”优化的列表?'不用说你的编译器是什么。
-
@Kerrek SB:因为我不习惯组装
-
@Simon:如果您对编译目标不满意,您希望什么样的答案对您有用?优化通常只体现在生成的目标代码中...
-
@Julian:我很确定几乎所有优秀的编译器都在做大致相同的优化。至少在这样的简单情况下(我使用的是 clang 和 gcc)
标签: c++ compiler-optimization inlining