计算机性能指标与提升

47 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天,点击查看活动详情

时间

首先为了评价性能,我们要明确常见的时间概念: 常见的时间:

  1. 实时时钟时间(Real-time clock time):也称为系统时间,是计算机内部用于记录当前时间的时间戳,通常以格林威治标准时间(GMT)或协调世界时(UTC)为基准。
  2. 处理器时钟时间(Processor clock time):也称为时钟周期,是计算机内部用于记录处理器执行操作所需的时间的计时单位。通常以赫兹(Hz)为单位,表示每秒钟时钟周期的数量。
  3. 用户时间(User time):是指计算机程序在执行过程中,处理用户任务所需的时间。
  4. 系统时间(System time):是指计算机程序在执行过程中,处理系统任务(如输入输出操作、内存管理等)所需的时间。
  5. 墙上时钟时间(Wall-clock time):也称为墙上时间,是指从一个操作开始到结束所经过的时间,通常用于度量计算机程序的实际执行时间。

我们可以感受到的程序的运行时间是墙上时间,但真正参与运算的时间是用户时间+系统时间,其他时间cpu在做别的事情。

评价指标

两个指标:

  • 响应时间(执行时间):执行一个程序,到底需要花多少时间。

    • 性能 = 1/ 响应时间
  • 吞吐率(带宽):一定的时间范围内,到底能处理多少事情。

时间的衡量:

程序实际花费的 CPU 执行时间(CPU Time):就是 user time 加上 sys time。

  • CPU 可能满载运行也可能降频运行

程序的CPU执行时间=CPU时钟周期数×时钟周期时间程序的 CPU 执行时间 =CPU 时钟周期数×时钟周期时间

  • 提升主频(发热、工艺
  • 减少CPU 时钟周期数:指令数×每条指令的平均时钟周期数

程序的CPU执行时间=指令数×CPI×ClockCycleTime程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time

其实我们能做到的就是选合适的编程语言和写优秀的代码(复杂度低)来减少指令数

加强CPU性能

功耗 =1/2×负载电容×电压的平方×开关频率×晶体管数量功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量

  • 提升主频、增加晶体管数量、降低电压

并行计算--横向拓展

并行计算不是银弹,根据阿姆达尔定律

对于一个程序进行优化之后,处理器并行运算之后效率提升的情况:

优化后的执行时间=受优化影响的执行时间/加速倍数+不受影响的执行时间优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间

就算有无数的cpu也无法降低不影响的时间,因此根据实际场景和预算配置对应的并行度。