【发布时间】:2011-06-26 15:17:59
【问题描述】:
我可以确定:
class foo {
public:
int x;
void bar(int k) {
x = k;
}
};
foo o;
o.bar(5);
将与以下内容相同:
class foo {
public:
int x;
};
void foobar(foo& f, int k) {
f.x = k;
}
foo o;
foobar(o, 5);
我知道两者都会将“x”设置为“k”,但我可以确定它们都以相同的速度执行/生成相同的 asm 吗?编译器能否对方法进行更大的优化?
【问题讨论】:
-
@KennyCason:这可能是真的,但我不希望他接受答案纯粹是为了像你鼓励的那样增加一些无意义的统计数据。
-
很公平,但是他提出的 75% 的问题没有得到合适的可接受答案的几率是多少? :P
-
@Kenny:老实说我不在乎,只要这个问题对我来说很有趣,我会花时间阅读它及其答案,并且(如果我有心情)也许甚至可以提出我的一些答案。我不明白人们正在关注那个“接受率”参数......
-
@Matthieu 我同意,如果这是一个很酷的问题(而且我知道答案),我仍然会回答。我确实对这个问题很感兴趣。我想这就是提出问题但不提供任何反馈的整个过程,这有点粗鲁,有点违背 SO,IMO。