开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天,点击查看活动详情
时间
首先为了评价性能,我们要明确常见的时间概念: 常见的时间:
- 实时时钟时间(Real-time clock time):也称为系统时间,是计算机内部用于记录当前时间的时间戳,通常以格林威治标准时间(GMT)或协调世界时(UTC)为基准。
- 处理器时钟时间(Processor clock time):也称为时钟周期,是计算机内部用于记录处理器执行操作所需的时间的计时单位。通常以赫兹(Hz)为单位,表示每秒钟时钟周期的数量。
- 用户时间(User time):是指计算机程序在执行过程中,处理用户任务所需的时间。
- 系统时间(System time):是指计算机程序在执行过程中,处理系统任务(如输入输出操作、内存管理等)所需的时间。
- 墙上时钟时间(Wall-clock time):也称为墙上时间,是指从一个操作开始到结束所经过的时间,通常用于度量计算机程序的实际执行时间。
我们可以感受到的程序的运行时间是墙上时间,但真正参与运算的时间是用户时间+系统时间,其他时间cpu在做别的事情。
评价指标
两个指标:
-
响应时间(执行时间):执行一个程序,到底需要花多少时间。
- 性能 = 1/ 响应时间
-
吞吐率(带宽):一定的时间范围内,到底能处理多少事情。
时间的衡量:
程序实际花费的 CPU 执行时间(CPU Time):就是 user time 加上 sys time。
- CPU 可能满载运行也可能降频运行
- 提升主频(发热、工艺
- 减少CPU 时钟周期数:指令数×每条指令的平均时钟周期数
其实我们能做到的就是选合适的编程语言和写优秀的代码(复杂度低)来减少指令数
加强CPU性能
- 提升主频、增加晶体管数量、降低电压
并行计算--横向拓展
并行计算不是银弹,根据阿姆达尔定律
对于一个程序进行优化之后,处理器并行运算之后效率提升的情况:
就算有无数的cpu也无法降低不影响的时间,因此根据实际场景和预算配置对应的并行度。