用逗号而不是分号分隔语句会影响程序的速度吗?

时间:2011-02-04 20:26:18

标签: c++ performance

我想知道这些样本中的任何一个是否比另一个更“快”。我知道不会有很大的不同,但我只是想知道是否有任何不同。

CODE1:

a+b=c;
c=c*c;
d=c*a;

CODE2:

a+b=c,c=c*c,d=c*a;

如果我使用,;

那么重要吗?

只是问......:D

4 个答案:

答案 0 :(得分:2)

程序的行数并不表示其速度。要回答您的问题:不,您发布的两种表单之间的速度没有差异。如果你查看编译器为每个程序生成的汇编代码,你会发现它完全一样。

How to read the assembly output of a C program

答案 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的数量或消除对隐式转换运算符的调用。这样的优化中的一个将使您的计划真正做好。

相关问题