【发布时间】:2012-01-05 22:31:01
【问题描述】:
如果你有这样的方法:
float method(myClass foo)
{
return foo.PrivateVar() + foo.PrivateVar();
}
这样做总是更快/更好吗?:
float method(myClass foo)
{
float temp = foo.PrivateVar();
return temp + temp;
}
我知道您不应该将像 foo.PrivateVar() 这样的调用放在 for 循环中,因为当您实际上只需要使用一次值时(在某些情况下),它会多次评估它。
for (int i = 0; i < foo.PrivateInt(); i++)
{
//iterate through stuff with 'i'
}
据此,我假设将第一个示例中的代码更改为第二个示例中的代码,但后来人们告诉我不要试图比编译器更聪明!并且它可以很好地内联调用。
我不想描述任何东西,我只是想要一些简单的规则,以便在这方面进行良好的实践。我正在为一个工作申请编写一个演示,我不希望任何人看到代码并看到一些菜鸟错误。
【问题讨论】:
-
我们可以假设这个函数没有副作用吗?否则这是一个毫无意义的比较。
-
无论哪种方式,你都会让人们抱怨;没有灵丹妙药。例如我 建议您不要将
for循环优化作为一种习惯,因为这意味着您可能会在值的情况下搞砸并编写错误的代码PrivateInt()返回的值在循环过程中发生变化。 IMO,“正确”的事情是学习如何编写正确、可读的代码,并分别学习如何以及何时进行优化。
标签: c++ visual-studio optimization coding-style