我想知道这些样本中的任何一个是否比另一个更“快”。我知道不会有很大的不同,但我只是想知道是否有任何不同。
CODE1:
a+b=c;
c=c*c;
d=c*a;
CODE2:
a+b=c,c=c*c,d=c*a;
如果我使用,
或;
?
只是问......:D
答案 0 :(得分:2)
程序的行数并不表示其速度。要回答您的问题:不,您发布的两种表单之间的速度没有差异。如果你查看编译器为每个程序生成的汇编代码,你会发现它完全一样。
答案 1 :(得分:1)
在速度方面没有区别。
答案 2 :(得分:1)
应该没有任何区别。但是,它完全取决于编译器。在查看生成的程序集之前,无法确定您的编译器/解释器是否根据您输入的不同代码生成了不同的程序集。
在Visual Studio中,您可以像这样查看程序集: http://msdn.microsoft.com/en-us/library/a3cwf295.aspx
通常,请记住,您在C ++中编写的代码是由程序扫描的,该程序决定了如何为您生成程序集。所以在大多数情况下,像这样的合成糖会为更长的版本生成相同的汇编代码。
更重要的是,你应该不再担心这里的速度差异了。如果速度是一个问题,请始终先查看您的算法,早在这些微小差异之前。
答案 3 :(得分:0)
通常,根本不需要逗号运算符,并且通常它仅用于编写令人困惑的代码以用于可疑目标。例如,我不止一次看到像这样的代码
if (expression)
statement1,
statement2,
statement3;
仅为'目标'为{和}保存一两个额外的行。
我的建议:
a)简单地忘记逗号运算符的存在!
b)甚至不考虑像这样的微优化,而是寻找真实的东西以优化循环,或调用c-tors的数量或消除对隐式转换运算符的调用。这样的优化中的一个将使您的计划真正做好。