进行比比较少或小于或等于或等于? 我想知道进行较小的效率比循环中的比较或比较少于比较更有效。做

问题描述 投票:0回答:2
吗?还是我应该告诉它

while i <= 1000, i++;

?编译器(GCC)是否将其简化为相同的基本说明?
	
机器级体系结构将具有两者的OP代码

c++ loops optimization operators
2个回答
9
投票
它取决于体系结构。

原始的von Neumann IAS Architecture(1945)确实只有< and <= operations and both comparisons can be made in one cycle of the CPU. Meaning it makes no difference.

>=

5
投票
INTEL8086可以使用

Loop label

范式,这对应于

do { } while (--cx > 0);


在传统体系结构中,不仅较小,而且更快。在现代体系结构中,

LOOP

被认为是复杂的操作,它比对尺寸(-os)进行优化时要慢。这仍然具有重要意义。 further考虑的是,某些(RISC)架构没有明确的标志寄存器。然后,比较不能自由,作为循环减小的副作用。一些RISC架构也具有特殊的“零”寄存器,这意味着,始终可用的具有零的比较(以及其他所有数学操作)。带有延长延迟插槽的RISC甚至可能会受益于使用后减少:

LOOP
优化编译器应该能够将简单的循环转换为给定体系结构最优化的版本。复杂的循环对迭代器,副作用或两者兼有依赖性:
dec ecx; jnz label;
.

对其进行了措施。只有这样,您才可以绝对确定哪个更快。

您可能会对在此处发挥作用的所有作用(编译器,优化,处理器等)进行很多思考。但是最后,如果花费更少的时间,则更快。就像那样简单。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.