【发布时间】:2014-10-22 08:45:11
【问题描述】:
以下代码执行相同的逻辑(x 仅为 0 或 1)。 哪个代码执行得更快?
第一个密码:
if (x == 1)
{
y = 10;
}
第二个密码:
if (x != 0)
{
y = 10;
}
第三码:
if (x)
{
y = 10;
}
【问题讨论】:
-
我会说这是完全相同的执行时间
-
它们可能相同,但这取决于 CPU 和编译器。为什么不让编译器生成程序集(可能是
-S选项),或者反汇编编译结果并检查? -
@BartekBanachewicz 您假设类型和标头甚至存在于 OP 的编译器中。
-
@lurker 编程语言 C 由 ISO/IEC JTC1/SC22/WG14 标准定义。在谈论 C 时,最新标准 (ISO/IEC 9899) 应该有效,除非另有明确说明。
-
我已经在不同平台上尝试过这段代码,并且已经获得了不同的性能。 @lurker 你能分享一下你对 Y 的担忧吗?
标签: c performance microcontroller computer-architecture