while i <= 1000, i++;
?编译器(GCC)是否将其简化为相同的基本说明?
机器级体系结构将具有两者的OP代码
原始的von Neumann IAS Architecture(1945)确实只有< and <= operations and both comparisons can be made in one cycle of the CPU. Meaning it makes no difference.
>=
Loop label
do { } while (--cx > 0);
LOOP
被认为是复杂的操作,它比对尺寸(-os)进行优化时要慢。这仍然具有重要意义。 further考虑的是,某些(RISC)架构没有明确的标志寄存器。然后,比较不能自由,作为循环减小的副作用。一些RISC架构也具有特殊的“零”寄存器,这意味着,始终可用的具有零的比较(以及其他所有数学操作)。带有延长延迟插槽的RISC甚至可能会受益于使用后减少:
LOOP
优化编译器应该能够将简单的循环转换为给定体系结构最优化的版本。复杂的循环对迭代器,副作用或两者兼有依赖性:
dec ecx; jnz label;
.。
对其进行了措施。只有这样,您才可以绝对确定哪个更快。 您可能会对在此处发挥作用的所有作用(编译器,优化,处理器等)进行很多思考。但是最后,如果花费更少的时间,则更快。就像那样简单。