1.61性能的定义
在场景和需求不同时,衡量计算机性能的指标也不同。
我们可以从从吞吐量和响应速度来衡量计算机性能。
本书将计算机的性能比值定义为两计算机执行程序时间的反比。
1.62性能的度量
探寻程序运行效率瓶颈时,执行时间可以分为多个部分,如CPU执行时间,I/O系统执行时间,等等。本书会将视角聚焦在CPU执行时间中,细分下去,CPU执行时间可以分为,用户程序使用的时间和程序调用的操作系统运行时间,即用户时间和,系统时间。
CPU的运行效率与其CPU频率(时钟频率)紧密相关,一般单位为每秒百万次
1.7功耗墙
为了提升程序运行速度,最直接的方式就是提高时钟频率(计算机行业的增长和基础指令数的增长是分不开的)
从04年开始,高速增长的intel CPU时钟频率和功率同时停止了增长。
这意味着:我们已经无法冷却如此高频率的CPU运行带来的功耗。(为了防止CPU损坏,温度升高后,功耗墙会限制CPU功率,部分CPU温度较低时采用较高的CPU频率)
散热成了运行仓储式计算机的最大开销!
为了降低CPU功耗我们已经将CPU电压从5V逐步降低到了1V。电压过低,泄露电压的危害越大,这暂时阻止了从这一途径提升CPU性能
1.8多核 CPU
从06年开始,多核CPU被广泛使用。
这对于程序编写是一次革命性的颠覆。并行成为了重要概念。如何拆分任务,尽量平分任务成了程序编写中极其重要的一点。
1.9CPU评测程序
为了测量CPU性能,人们创立了基准测量程序,由一系列不同程序组成,选取CPU运行时的经常性事件,在基准程序中分配好其比例是保证基准程序有效的必须要求。(也就是跑分)。除此之外,还可以直接用高负荷程序来观测CPU运行情况。(例如游戏实测)
衡量不同负荷下的CPU功耗对预测CPU表现也十分有用。(通常表现为测温度,对于个人计算机,温度与用户使用体验息息相关)
1.10 python程序优化
本书将逐步将用python书写的960*960矩阵从五分钟优化到一秒,提升近50000倍。
第二章,转C,200倍
数据并行,8倍
指令并行,2倍
第五章,存储结构优化,1.5倍
第六章,线程级并行,15倍
(我们可以在pyhton中调用高度优化numpy库来优化为一秒,python的性能高度依赖与程序调用库的质量)