我已经编写了执行特定任务的代码;现在当我在不同的机器上运行(具有不同的频率)时,它会花费不同的时间吗?我的代码的机器效果执行时间的频率是多少?
Ouestion
如果我的代码有一个printf
功能,然后将其所需的机器周期的数量是固定的所有机器,还是会依赖于系统?
我的系统频率是2.0GHz,这是什么意思?
我已经编写了执行特定任务的代码;现在当我在不同的机器上运行(具有不同的频率)时,它会花费不同的时间吗?我的代码的机器效果执行时间的频率是多少?
Ouestion
如果我的代码有一个printf
功能,然后将其所需的机器周期的数量是固定的所有机器,还是会依赖于系统?
我的系统频率是2.0GHz,这是什么意思?
代码的执行时间将取决于CPU的频率以及许多其他事情。所有其他条件相同的情况下,更快的CPU将花更少的时间来执行相同的指令。但是其他可能影响时序的事物数量很多,包括O/S,编译器,内存芯片,磁盘等等。
如果机器具有相同的基本架构,那么机器周期数是固定的。但是,现代CPU架构非常复杂,并且根据机器上同时运行的其他内容,可能会有轻微的变化。如果这些机器具有不同的芯片类型(即使在诸如Intel Core 2 Duo之类的系列中),结果可能会不同。如果这些机器具有不同的体系结构(比如Intel和SPARC或PowerPC),那么所有投注都是关闭的。
如果“频率为2.0 GHz”,则表示主CPU时钟周期为2.0 GHz。在这段时间内执行多少指令取决于指令,并行性(多少核)以及CPU类型等.CPU频率与控制存储器读取速度的总线频率是分开的(所以,我使用2.0 GHz CPU但内存总线运行在1067 MHz)。当然,电脑的
“如果机器具有相同的基本体系结构,那么机器周期数是固定的” - 取决于相同基本体系结构的含义。即使忽略了内存性能差异等等,但对于某些指令而言,1.1版本的芯片对于某些指令的循环次数可能与同一芯片的1.0版本相比有所不同,尽管对于大多数用途你可以称它们为“相同的架构”。但是完全相同的芯片以不同的速度运行,周期数将是相同的。 –
CPU的频率定义了它在特定时间内可以完成的工作量。所有机器上的代码都是相同的(即它是编译代码),所以是的频率会影响运行程序所花费的时间。
时钟速度有其上的程序的执行时间影响,而只是说明该处理器在2 GHz的运行是绝对不够的,以确定多长时间完全程序将运行,因为有巨大处理器系列之间“效率”的差异 - 英特尔酷睿系列处理器在运行速度相同时,每单位时间的处理能力要比其前身Pentium 4高出许多。
所以是的,CPU速度对程序的执行时间有严重的影响,但只有GHz值是绝对不够的。这就是建立各种基准的原因,以便能够比较处理器在一个时间单元中可以完成的工作。这些基准将运行混合的指令,这些指令可以被视为所选场景中的典型工作负载,以及执行时间需要多长时间。查看Whetstone和Dhrystone了解一些较旧的但相对容易理解的基准。
,有吨的基准的事实只能证明这是不容易的,以获得其关联大家都能认同同等的数值,它仍然是辩论的主题......
+1提供基准提名 – pmod
周期数会有所不同具体取决于编译器生成的机器指令和CPU的体系结构。其他条件相同,速度将与时钟速率成正比。 –
@ Tom你的意思是说,对于一个系统printf()可能在10个机器周期内执行,对于其他系统可能需要15个机器周期。 –
好吧,这两个数字对于涉及I/O如'printf'的相当复杂的函数来说都非常小。但是,是的,可能会有显着的差异。这完全取决于编译器如何翻译它以及机器的指令集。 –