(四)CPU主频与”性能“
一、什么是性能
CPU的性能就是就是时间的倒数,简单来说:耗时越少,性能越好,主要包含下面两个指标:
- 响应时间:程序执行耗时
- 吞吐率:单位时间处理数据或执行程序的量
缩短响应时间,一定时间内可以执行更多的任务,也就提高了吞吐率;除此之外现代CPU一般都是多核,多个核心同时工作就是通过“并行”来提高吞吐率,由于提示单机性能越来越困难也就是说要缩短响应时间很困难,因此大部分时候我们通过“堆机器”来提升吞吐率。
二、CPU时钟
如何统计程序运行时间?
由于计算机运行过程中会不断在,CPU会不断在多个程序间切换,因此通过代码中打印起止时间的方式并不能准确统计出程序运行时间;但是在Linux下我们可以使用time命令来较为准确的统计程序运行时间:real表示程序运行时结果的自然时间
$ time seq 1000000 | wc -l 1000000
# 程序运行实际花费的时间=用户态时间+内核态时间
real 0m0.101s # 程序运行时自然流过的时间 user 0m0.031s # 程序运行中花在用户态的时间
sys 0m0.016s # 程序运行中花在内核态的时间
程序的运行时间受很多因素影响,这包括CPU执行指令、IO操作耗时、数据在主板上传输的时间等等,因此我们需要对于具体指标加以分析,比如CPU时间组成如下:
程序的 CPU 执行时间 =CPU 时钟周期数(CPU Cycles)× 时钟周期时间(Clock Cycle)
CPU内部使用“晶体振荡器”来控制CPU时钟(石英表好像也是利用晶体振荡频率),例如Intel Core-i7-7700HQ 2.8GHz这款CPU的时钟周期时间就是1/2.8G;看起来,我们可以通过提升CPU主频就可以降低程序运行时间。
然而:由于每条指令执行需要的CPU时钟周期数不同,因此我们引入指令平均耗时CPI这个参数,程序运行时间的表达也就变成这样:
程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time
由此可知,优化程序的CPU运行效率就是优化以上三个参数:
- CPU时钟周期,3.8GHz的就要比2.8GHz的强很多
- 每条指令的平均时钟周期数CPI
- 指令数,将程序语言转换成CPU指令是编译器做的事
南山马

浙公网安备 33010602011771号