C++ 用逗号而不是分号分隔语句是否会影响我的程序';速度是多少?

C++ 用逗号而不是分号分隔语句是否会影响我的程序';速度是多少?,c++,performance,C++,Performance,我想知道这些样本中是否有一个比另一个“更快”。我知道不会有太大的区别,但我只是想知道有没有区别 代码1: a+b=c; c=c*c; d=c*a; 代码2: a+b=c,c=c*c,d=c*a; 那么,如果我使用、或,这有关系吗 只是问…:在速度方面没有差别。一个程序的行数并不表示它的速度。回答您的问题:不,您发布的两个表单在速度上没有差异。如果您查看编译器为每个程序生成的汇编代码,就会发现它们完全相同 应该没有任何区别。但是,它完全取决于编译器。在查看生成的程序集之前,无法确定编译器/解释

我想知道这些样本中是否有一个比另一个“更快”。我知道不会有太大的区别,但我只是想知道有没有区别

代码1:

a+b=c;
c=c*c;
d=c*a;
代码2:

a+b=c,c=c*c,d=c*a;
那么,如果我使用
,这有关系吗


只是问…:在速度方面没有差别。

一个程序的行数并不表示它的速度。回答您的问题:不,您发布的两个表单在速度上没有差异。如果您查看编译器为每个程序生成的汇编代码,就会发现它们完全相同


应该没有任何区别。但是,它完全取决于编译器。在查看生成的程序集之前,无法确定编译器/解释器是否根据您输入的不同代码生成了不同的程序集

在Visual Studio中,可以按如下方式查看程序集:

一般来说,请记住C++中编写的代码是由一个程序扫描的,该程序决定如何为您生成程序集。所以在大多数情况下,像这样的syntactic sugar将生成与较长版本相同的汇编代码


更重要的是,你应该停止担心这里的速度差异。如果速度是一个问题,总是先看看你的算法,而不是像这些微小的差异

一般来说,逗号运算符根本不需要,而且常常只用于编写混乱的代码,以达到可疑的目的。例如,我不止一次看到这样的代码

if (expression)
  statement1,
  statement2,
  statement3;
只是为了“目标”为{和}保存一到两个额外的行

我的建议:
a) 简单地忘记逗号运算符的存在

b) 甚至不要考虑像这样的微观优化,而是寻找一些真实的东西来优化循环,或者被调用的c-TOR的数量,或者消除对隐式转换操作符的调用。一次这样的优化将对您的程序产生真正的好处。

我想不会。(我假设第一行是向后的。)你知道你可以只看汇编代码。唯一的区别是第二种情况是表达式,因此它产生值
d
。在这种情况下,它有助于比较编译器生成的程序集。当然,如果要比较速度/指令,请使用发布版本设置生成。为什么要问“哪一个更快?”而不是“哪一个更可读?”我不是问哪一个更快,我只知道速度是否有差异。我只是好奇而已,这有点像转载。谢谢你的帮助。不,我不担心程序的速度,只是。。。我突然想到这个问题:))。现在我可以睡个好觉了D