【问题标题】:Does the comma operator make the code slower?逗号运算符会使代码变慢吗?
【发布时间】:2018-06-07 08:26:54
【问题描述】:

CodeForces 等网站上解决问题时,我经常使用逗号运算符(C 语言)。而且我注意到我的解决方案似乎比大多数其他解决方案需要更多的执行时间,尽管没有太大区别。

所以我的问题是逗号运算符是否会增加 CPU 的开销?就像不需要评估它的两个操作数一样。将它们分成两个语句会更快吗?还是编译器会优化它?

【问题讨论】:

  • 不太可能。但同样,唯一确定的方法是检查装配和/或轮廓。语言本身没有关于操作“速度”的先天概念。
  • I use the comma operator (in C) very often 不要。编写可读的代码。
  • 如果存在差异,那么它很可能是基于编译器、其设置和运行平台的变量。无论如何,我同意@DeiDei 的观点,即编写可读代码应该比微优化具有更高的优先级。如果您想要优化,请选择好的算法。
  • @Dragonthougts 为什么你认为编译器不太可能优化它。我的意思是,如果从不使用逗号运算符的返回值,我猜这将是一个很好的优化。然而,正如 DeiDei 所说,我开始相信可读代码在竞争性编码中并不重要。
  • @OmarAlhelo 我指的不是竞争性编码,而是一般的编码。一旦你摆脱了竞争,你把坏习惯带到了现实世界的项目中,你很可能会受苦。另一方面,我没有看到“丑陋”的代码比可读代码表现更好,尤其是逗号运算符。就像 Dragonthoughts 说的那样,好的算法会带来性能,而不是逗号。

标签: c comma-operator


【解决方案1】:

没有。逗号运算符不会使代码变慢。

话虽如此,但逗号运算符在大多数代码中很少见。几乎唯一需要它的是当您在两个变量上运行 for 循环时,如

for(i = 0, j = n; i < j; i++, j--)

(我相信有些类似 C 的语言只允许在 for 循环的第一个和第三个表达式中使用逗号运算符,而在其他任何地方都不允许它。)

在您使用逗号运算符的任何其他时间,它通常表示您正在做一些“聪明”但不必要的事情,这主要是为了使您的代码更混乱或更难阅读。

(话虽如此,但事实上大多数 C 程序中的大多数逗号都不是逗号运算符。在函数调用中分隔参数的逗号不是逗号运算符,也不是分隔多个声明的逗号,如 @987654324 @.)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 2017-01-13
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多