Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 机器的频率是否影响代码的执行时间?_C_Performance_Architecture - Fatal编程技术网

C 机器的频率是否影响代码的执行时间?

C 机器的频率是否影响代码的执行时间?,c,performance,architecture,C,Performance,Architecture,我编写了执行特定任务的代码;现在,当我在不同的机器上运行(具有不同的频率)时,会花费不同的时间吗 Ouestion 如果我的代码有一个printf功能,那么所有机器所需的机器循环数是固定的,还是取决于系统 我的系统频率是2.0GHz,这意味着什么?CPU的频率定义了它在一定时间内可以做多少工作。所有机器上的代码都是相同的(即编译代码),因此是的,频率将影响运行程序所需的时间。代码的执行时间将取决于CPU的频率,以及许多其他因素。在所有其他条件相同的情况下,更快的CPU执行相同指令所需的时间更少。

我编写了执行特定任务的代码;现在,当我在不同的机器上运行(具有不同的频率)时,会花费不同的时间吗

Ouestion

如果我的代码有一个
printf
功能,那么所有机器所需的机器循环数是固定的,还是取决于系统


我的系统频率是2.0GHz,这意味着什么?

CPU的频率定义了它在一定时间内可以做多少工作。所有机器上的代码都是相同的(即编译代码),因此是的,频率将影响运行程序所需的时间。

代码的执行时间将取决于CPU的频率,以及许多其他因素。在所有其他条件相同的情况下,更快的CPU执行相同指令所需的时间更少。但是影响定时的其他因素很多,包括O/S、编译器、内存芯片、磁盘等等


如果机器具有相同的基本架构,则机器周期数是固定的。然而,现代CPU体系结构非常复杂,并且很容易根据机器上同时运行的其他内容而发生变化。如果机器有不同的芯片类型(即使是在Intel Core 2 Duo这样的系列中),那么结果可能会有所不同。如果机器是不同的体系结构(比如说Intel vs SPARC或PowerPC),那么所有的赌注都没有了


如果“频率为2.0 GHz”,则表示主CPU时钟周期为2.0 GHz。在这段时间内执行多少指令取决于指令、并行性(多少核)和CPU类型等。CPU频率与控制内存读取速度的总线频率不同(因此,我使用的是2.0 GHz CPU,但内存总线的运行频率为1067 MHz)计算机的时钟速度当然会对程序的执行时间产生影响,但仅仅说明处理器以2 GHz的频率运行绝对不足以确定程序将运行多长时间,因为“效率”存在巨大的差异在处理器系列之间——英特尔Core系列处理器在以相同速度运行的情况下,每单位时间所做的工作将比其前身奔腾4多得多

因此,是的,CPU速度对程序的执行时间有着严重的影响,但仅仅GHz值是绝对不够的。这就是为什么设置了各种基准测试,以便能够比较处理器在一个时间单位内可以完成的工作。这些基准测试将运行一组指令,这些指令可以被视为所选场景中的典型工作负载,以及执行它们所需的时间。查看并查找一些较旧但相对容易理解的基准测试


有大量基准测试的事实证明,要获得一个大家都能同意的相关性的可比值并不容易,这仍然是一个争论的话题……

周期数将根据编译器生成的机器指令和CPU的体系结构而有所不同。在其他条件相同的情况下,速度将与时钟频率成正比。@Tom您的意思是,对于一个系统,printf()是否可能在10个机器周期内执行,而对于另一个系统,它可能需要15个机器周期..?对于一个相当复杂的涉及I/O(如
printf
)的函数,这两个数字都非常小。但是是的,可能会有很大的不同。这完全取决于编译器如何翻译它和机器的指令集。@Tom谢谢…有没有办法知道我的系统中任何函数/语句的机器周期,…?编译到汇编,找出你的机器上每条指令的周期,并模拟一个调用,我猜。探查器可能会告诉你,“如果机器具有相同的基本架构,那么机器周期的数量是固定的”——这取决于你所说的相同基本架构是什么意思。即使忽略内存性能等方面的差异,与同一芯片的1.0版相比,芯片的1.1版可能对某些指令具有不同的周期计数,尽管在大多数情况下,您会称它们为“相同的体系结构”。但是,同一个芯片以不同的速度运行时,循环计数将是相同的。