逗号运算符会使代码变慢吗?
Does the comma operator make the code slower?
在 CodeForces 等网站上解决问题时,我经常使用逗号运算符(C 语言)。而且我注意到我的解决方案似乎比大多数其他解决方案需要更多的执行时间,尽管差别不大。
所以我的问题是逗号运算符是否在 CPU 上增加了开销?就像不需要评估其两个操作数一样。将它们分开在两个语句中会更快吗?或者编译器无论如何都会优化它?
没有。逗号运算符不会使代码变慢。
尽管如此,逗号运算符在大多数代码中很少见。几乎你唯一需要它的时候是当你 运行 一个 for
循环两个变量时,如
for(i = 0, j = n; i < j; i++, j--)
(我相信有一些类似 C 的语言只允许在 for
循环的第一个和第三个表达式中使用逗号运算符,而在其他任何地方都不允许使用逗号运算符。)
其他任何时候您使用逗号运算符,通常表示您正在做一些 "clever" 但不必要的事情,这主要是为了让您的代码更混乱或更难阅读。
(尽管如此,大多数 C 程序中的大多数逗号也确实不是逗号运算符。函数调用中分隔参数的逗号不是逗号运算符,分隔多个声明的逗号也不是,例如int i, j;
.)
在 CodeForces 等网站上解决问题时,我经常使用逗号运算符(C 语言)。而且我注意到我的解决方案似乎比大多数其他解决方案需要更多的执行时间,尽管差别不大。
所以我的问题是逗号运算符是否在 CPU 上增加了开销?就像不需要评估其两个操作数一样。将它们分开在两个语句中会更快吗?或者编译器无论如何都会优化它?
没有。逗号运算符不会使代码变慢。
尽管如此,逗号运算符在大多数代码中很少见。几乎你唯一需要它的时候是当你 运行 一个 for
循环两个变量时,如
for(i = 0, j = n; i < j; i++, j--)
(我相信有一些类似 C 的语言只允许在 for
循环的第一个和第三个表达式中使用逗号运算符,而在其他任何地方都不允许使用逗号运算符。)
其他任何时候您使用逗号运算符,通常表示您正在做一些 "clever" 但不必要的事情,这主要是为了让您的代码更混乱或更难阅读。
(尽管如此,大多数 C 程序中的大多数逗号也确实不是逗号运算符。函数调用中分隔参数的逗号不是逗号运算符,分隔多个声明的逗号也不是,例如int i, j;
.)