内容简介:对计算机的性能进行评价是一项富有挑战性的工作。由于现代软件系统的规模及其复杂度,以及硬件设计者采用了大量先进方法来改进性能,因此性能评价变得更为困难。在不同的计算机中挑选合适的产品时,性能是重要的因素之一。因此,理解怎样才能最好地测量性能以及这些测量的局限性,对于选择1台计算机是非常重要的。在这里,我们介绍性能评价的不同方法,然后分别从计算机用户和设计者的角度描述性能测量的度量标准,最后分析这些度量标准之间的内在关联,并提出经典的处理器性能方程式。
对计算机的性能进行评价是一项富有挑战性的工作。由于现代软件系统的规模及其复杂度,以及硬件设计者采用了大量先进方法来改进性能,因此性能评价变得更为困难。
在不同的计算机中挑选合适的产品时,性能是重要的因素之一。因此,理解怎样才能最好地测量性能以及这些测量的局限性,对于选择1台计算机是非常重要的。
在这里,我们介绍性能评价的不同方法,然后分别从计算机用户和设计者的角度描述性能测量的度量标准,最后分析这些度量标准之间的内在关联,并提出经典的处理器性能方程式。
性能的定义
当我们说一台计算机的性能优于另一台计算机时,究竟意味着什么?在这里,我们需要先对性能进行定义。根据性能指标的不同,评价的结果也不同。
如果在2台不同的桌面计算机上运行同1个程序,那么首先完成作业的那台计算机显然更快。但如果运行的是1个数据中心(有多台服务器同时运行多个用户提交的作业),那你也许会说在一天之内完成作业最多的那台计算机更快。
因此,个人计算机用户希望降低 响应时间 (response time),又称 执行时间 (execution time),它表示1个任务从开始执行到完成的总时间。而数据中心的管理员感兴趣的是增加 吞吐量 (throughput)和 带宽 (bandwidth),即单位时间内完成的工作量。
对此,在评价性能时,对于关注响应时间的个人移动设备和关注吞吐率的服务器,需要使用不同的性能指标和基准测试程度。
响应时间:也称为执行时间,是计算机完成一项任务所需的总时间,包括磁盘访问、内存访问、I/O操作、操作系统开销以及CPU执行时间等。
吞吐率:也叫带宽,1种度量性能的参数,表示单位时间内完成的任务量。
例如,增加多个处理器分别处理独立的任务,如搜索万维网,一般情况不能让单个任务完成得更快,但是可以增加吞吐率。而如果将计算机的处理器更换为更高速的型号,那么在减少响应时间的同时一般也可以增加吞吐率。
而当需要处理的任务量达到吞吐率上限时,系统会要求请求的任务排队等待。此时,我们增加多个处理器分别处理独立的任务的方式,提高吞吐率的同时也减少了响应时间。因此,在实际的计算机系统中,响应时间和吞吐率往往是相互影响的。
而在讨论计算机性能时,我们暂时只考虑响应时间。为了使性能最大化,我们希望任务的响应时间或执行时间最小,对于某个计算机X,响应时间和执行时间可以表达为:
$$
性能 {x} = \frac{1}{执行时间 {x}}
$$
如果有2台计算X和Y,X比Y性能更好,则有$$
\frac{1}{执行时间 {x}} \gt \frac{1}{执行时间 {Y}}
$$。
也就是说,如果X比Y快,那么Y的执行时间比X长。
在讨论计算机设计时,经常要定量地比较计算机的性能,通常说X的速度是Y的n倍或X是Y的n倍快,即:
$$
\frac{性能 {X}}{性能 {Y}} = n
$$
如果X比Y快n倍,那么Y上的执行时间是X上执行时间的n倍。
简单而言,当我们试图对计算机进行量化比较时,通常采用术语 比什么快 。因为性能和执行时间是倒数关系,所以提高性能就需要减少执行时间。而为了避免使用术语增加和减少时造成混淆,当我们想说增加性能和减少执行时间时,通常用改进性能或者改进执行执行时间来表示。
性能的度量
时间常用来度量计算机性能。完成同样的任务时,所需时间最少的计算机是最快的。而程序的执行时间一般以秒为单位,然而当我们采用的计量方式不同时,时间也有不同的定义方法。对时间最直接的定义是 墙钟时间 (也叫响应时间或消逝时间)。这些术语均表示完成一项任务所需的总时间,包括磁盘访问、内存访问、I/O操作和操作系统开销等一切时间。
有时候,计算机经常被多个用户共享,因此1个处理器可能需要同时运行几个程序。在这种情况下,系统可能更侧重于优化整个系统的吞吐率,而不是最小化1个程序的响应时间。因此,我们往往需要把任务执行时间与CPU工作时间区别开来。
我们使用CPU执行时间或简称CPU时间,表示CPU为完成某任务花费的计算时间,不包括等待I/O或等待其他程序运行的时间。需要注意的是,用户所感受到的是程序的响应时间,而不是CPU时间。
CPU时间还可进一步分为用户程序执行所花费的CPU时间和操作系统为用户程序执行(操作系统服务)所花费的CPU时间,其中前者称为用户CPU时间,而后者称为系统CPU时间。这两者很难精确区分,因此通常难以分清哪些操作系统的活动是属于哪个用户程序的,而且不同操作系统的功能也千差万别。
不同的应用关注计算机系统性能的不同方面。许多应用,特别是运行在服务器上的应用,主要关注I/O性能,既依赖硬件又依赖软件,因此关注的是墙钟时间。而其他一些应用中,用户可能对吞吐率、响应时间或两者的组合更为关注。而要改进程序的性能,必须明确哪个性能指标是关键的,然后再对程序执行进行测量,寻找可能的性能瓶颈。
CPU的性能及其度量因素
用户和设计师经常以不同的指标来评价性能。如果我们能掌握这些不同指标之间的关系,就能确定设计中的变化对性能以及用户体验的影响。下面,我们通过1个简单的公式把最基本的几个CPU性能指标和CPU时间关联起来:
程序的CPU执行时间 = 程序的CPU时钟周期数 × 时钟周期长度
该公式清楚地表明,硬件设计者可以通过减少程序执行时所需的CPU时钟周期数或减少时钟周期的长度来提高性能。
指令的性能
而上述公式并没有考虑程序执行所需的指令数。在编译器产生与程序对应的指令,然后计算机通过执行指令来运行程序,因此执行时间依赖于程序中的指令数。
1种考虑执行时间的方法是,执行时间等于执行的指令数乘以每条指令的平均执行时间,所以1个程序需要的时钟周期可以写成:
CPU时钟周期数 = 程序的指令数 × 每条指令的平均时钟周期数
术语CPI(Clock cycles Per Instruction)表示执行每条指令所需的平均时钟周期数。不同的指令需要的时间可能不同,因此CPI是程序全部指令的平均值。因为1个程序的指令数是不变的,所以可以通过CPI来对相同指令集的不同实现方式进行比较。
经典的CPU性能公式
下面用 指令数 (instruction count)、CPI和时钟周期长度来表示基本性能公式:
CPU时间 = 指令数 × CPI × 时钟周期长度
其中指令数表示某程序执行所需的指令数量。
由于时钟频率和时钟周期长度互为倒数,因此可以表示为:
$$
CPU时间 = \frac{指令数\times CPI}{时钟频率}
$$
这些公式把性能分解为3个关键因素。因此,如果我们知道某些实现或设计对这3个参数的影响,就可用这些公式对不同方案进行评估。
因此,我们有如下的公式:
$$
执行时间 = \frac{执行的秒数}{程度} = \frac{指令数}{程序} \times \frac{时钟周期数}{指令} \times \frac{秒}{时钟周期}
$$
那么,如何确定性能公式中这些因素的值呢?我们可以通过运行程序来测量CPU的执行时间,而时钟周期通常是1台计算机的固有属性,而在计算机的说明书中都会有明确说明。难以测量的是指令数和CPI。
当然,如果确定了时钟频率和CPU执行时间,我们只需要知道指令数或者CPI这两者之一,就可以依据性能公式计算出另一个。
通过用体系结构仿真器等软件 工具 分析程序的执行可以测量出指令数。此外,也可以通过很多处理器中自带的硬件计数器来测量执行的指令数、平均CPI和性能损失源等。但是,CPI与计算机的各种设计细节密切相关,包括存储系统和处理器结构以及应用程序中不同类型所占的比例。因此,不同的应用程序有不同的CPI,就像相同指令集有不同的实现方式一样。
可以看到,如果只用1种因素(如指令数)去评价性能是不合理的。在比较2台计算机时,形成执行时间的3个因素都应当考虑。如果某个因素相同,则性能由其他不同的因素决定。而程序的性能与算法、编程语言、编译器、体系结构以及实际的硬件有关。
结语
说了这么多,总算明白为什么编程时要调用time函数对程序进行测量了,原来也是对性能指标时间的1种评价,为了说明和查看程序性能是否比之前好的方式。
参考书籍:
《计算机组成与设计(硬件/软件接口)ARM版》P20-28
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 性能优化第一课:性能指标
- 【前端性能优化】vue性能优化
- Golang 性能测试 (2) 性能分析
- 【前端性能优化】02--vue性能优化
- Java性能 -- 性能调优标准
- Java性能 -- 性能调优策略
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
图论算法理论、实现及应用
王桂平//王衍//任嘉辰 / 北京大学 / 2011-1 / 54.00元
《图论算法理论、实现及应用》系统地介绍了图论算法理论,并选取经典的ACM/ICPC竞赛题目为例题阐述图论算法思想,侧重于图论算法的程序实现及应用。《图论算法理论、实现及应用》第1章介绍图的基本概念和图的两种存储表示方法:邻接矩阵和邻接表,第2~9章分别讨论图的遍历与活动网络问题,树与图的生成树,最短路径问题,可行遍性问题,网络流问题,支配集、覆盖集、独立集与匹配,图的连通性问题,平面图及图的着色问......一起来看看 《图论算法理论、实现及应用》 这本书的介绍吧!