性能优化 -- 详解

本文详细介绍了性能优化的基础概念,包括 wall clock time, CPU time 和 off-CPU time,并探讨了它们在性能分析中的作用。文章讨论了如何利用 profiler 工具进行性能观测,特别是 CPU 上的 profiler,如 perf,以及如何使用火焰图和 speedscope 进行可视化分析。此外,还强调了 perf 在 Python 程序优化中的局限性。" 133117817,19974113,Xcode与iOS适配:Auto Layout与Size Classes实践,"['ios', 'xcode', '编程学习', '界面适配', 'Auto Layout']
摘要由CSDN通过智能技术生成

参考链接 – 旷世天元

1. 了解什么是性能优化

性能优化十分宽泛,但一般包含 CPU、内存、磁盘、网络等方面。

2. 了解性能优化中一些基础概念

2.1 了解 wall clock time, CPU time 和 off-CPU time

衡量程序性能最直接的标准就是程序的运行时间,但仅仅知道程序的运行时间很难指导我们如何把程序优化地更快,我们想要更进一步地了解这段时间之内到底发生了什么。

Linux 系统上的 time 命令能够告诉我们一些粗糙的信息,我们在命令行里输出下面的命令来测量检查某个文件的 CRC 校验码的运行时间:

time cksum <some_file>

以我的电脑(MacBook Pro 2018)为例,得到了以下输出:

8.22s user 1.06s system 96% cpu 9.618 total

#这段文字告诉了我们时间都花在了哪里:

#总时间 9.618s
#user 时间 8.22s,其含义就是 user CPU time(程序用户态调用时间)
#system 时间 1.06s,其含义就是 system CPU time(内核态调用时间)

user CPU time + system CPU time = 8.22s + 1.06s = 9.28s != total 9.618s

  • 原因:
    这是因为这条命令执行的时间内,程序并不是总是在 CPU 上执行,还有可能处于睡眠、等待等状态,比如等待文件从磁盘加载到内存等。这段时间既不算在 user CPU time 也不算在 system CPU time 内。 我们把程序在 CPU 上执行的时间(即 user CPU time + system CPU time)称为 CPU time(或 on-CPU time),程序处于睡眠等状态的时间称为 off-CPU time(or blocked time),程序实际运行的时间称为 wall clock time(字面意思是墙上时钟的时间,也就是真实世界中流逝的时间),对于一个给定的线程:wall clock time = CPU time + off-CPU time。

总结:

on-CPU time = user CPU time + system CPU time
off-CPU time = 程序处于睡眠等状态的时间
wall clock time(字面意思是墙上时钟的时间,也就是真实世界中流逝的时间)= 程序实际运行的时间 = CPU time + off-CPU time
  • 通常在计算密集型(CPU intensive)的任务中 CPU time 会占据较大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值