计算哪个编译器在循环方面更快

Calculating which compiler is faster in terms of cycling

我只是有一个简单的问题,有点傻,但我只是需要为即将到来的考试做一些澄清,这样我就不会犯愚蠢的错误。我目前正在学习 class 计算机组织和设计,并且正在学习执行时间、CPI、时钟周期等。

对于一个问题,我必须计算 2 个编译器的周期数,并在给定指令数和每条指令的周期数的情况下找出哪个更快以及快多少。我的主要问题是计算更快的编译器有多快。

例如,假设它们是两个编译器:

Compiler 1 has 3 load instructions, 4 store instructions, and 5 add 
instructions.

Compiler 2 has 5 load instructions, 4 store instructions, and 3 add 
instructions 

一条加载指令需要2个周期,一条存储指令需要3个周期,一条加法指令需要1个周期

所以我要做的就是将指令 (3+4+5) 和 (5+4+3) 加起来,它们都等于 12 条指令。

然后我会通过将指令数乘以周期并将它们全部加在一起来计算周期

Compiler 1: (3*2)+(4*3)+(5*1) = 23 cycles 
Compiler 2: (5*2)+(4*3)+(3*1) = 25 cycles 

显然编译器 1 更快,因为它需要更少的周期。要找出编译器 1 比编译器 2 快多少,我可以只除以周期的比率吗?

我的计算结果是 23/25 = 0.92,因此编译器 1 比编译器 2 快 0.92 倍(快 92%)。

我的一个 class 朋友正在和我讨论这个问题,并声称它是 25/23,这意味着它快了 1.08 倍。

我知道我也可以通过将周期除以指令来计算这个:

23 cycles/12 instructions = 1.91 
25 cycles/12 instructions = 2.08 
and then 1.91/2.08 = 0.92 which is the same as the above answer. 

我不确定哪种方式是正确的。

我还想知道第二个编译器的指令数量是否不同,比如说 15 条指令。计算周期的比率是否足够?

或者我是否必须将周期与指令 (cycles/instructions) 分开,但为两者放置 15 条指令?

(ex. 23/15 and 25/15?) and then divide the quotients of both to get 
the times faster? I also get the same number(0.92) in that case. 

感谢您的澄清。

可能这两种计算都不准确,使用 modern/multi-core 处理器生成更多指令的编译器实际上可能会生成更快的代码。

第一个编译器的速度是第二个编译器的 1.08 倍,快 8%(因为 1.0 + 0.08 = 1.08)。