【发布时间】:2021-05-12 07:08:24
【问题描述】:
在 C 中,索引数组是否比 ?: 运算符更快?
例如,(const int[]){8, 14}[N > 10] 会比 N > 10? 14 : 8 快吗?
【问题讨论】:
-
你编译它并查看生成了什么代码?我认为一般没有办法回答你的问题。
-
你为什么不测量它或检查生成的代码?
-
使用三元运算符而不是
if/else已经够糟糕了,但(const int[]){8, 14}[N > 10]只适用于IOCCC。 -
福特和雪佛兰哪个更好? ——也就是说,这种问题几乎是完全无法回答的。如果您在意,则必须使用编译器在您的机器上进行测量。通常,差异是如此微小,您必须进行数百万次试验才能获得具有统计学意义的结果。通常,差异会很小,以至于毫无意义。最后,任何差异通常都无关紧要,因为程序的实际性能受其他问题支配。这种微优化很少重要。 (虽然,这是真的,但有时确实如此。)
-
什么,不是
8 + 6*(N>10)?还是fma(6, N>10, 8)?
标签: arrays c performance conditional-operator micro-optimization