1. pfm的原理说白了就是看你电脑里那些程序都在干啥,像个监控器,但比任务管理器细多了。
2. 你打开它,选个进程,然后跑一下任务,回去看那些数字,核心就是找哪个模块占CPU最多。
3. 我刚开始用的时候也懵,后来发现不用管那些花里胡哨的图表,直接看热点函数列表就行。
4. 原理上讲,它是在程序跑的时候采样,比如每1毫秒停一下看看CPU在哪儿,跑久了就大概知道哪段代码最耗性能。
5. 用起来其实就三步:选要监控的程序,点开始跑,跑完看报告,别瞎折腾参数。
6. 很多人搞错一点,它不是实时的,是跑完一轮才出结果,类似回放录像。
7. 如果你只是想知道哪个函数慢,不用看什么表格,直接翻那个叫“调用树”的玩意儿,找到最顶上的。
8. 原理上它需要你跑的程序配符号信息,不然你看报告全是地址,一点用没有。
9. 我一般先跑个短时间,比如30秒,看看有没有明显的热点,没有就加长时间。
10. 最后说一句,别信网上那些教程说啥高级用法,对新手看懂哪个函数最卡就够用了。
问:pfm能用在游戏上吗?
答:能啊,你就开游戏,然后后台跑pfm,打完一局看报告,找哪个模块在拖帧率。
问:为什么我跑出来的报告全是十六进制数字?
答:因为你没配符号文件,程序编译的时候得带上debug信息,不然它不知道每个地址对应哪个函数。
问:pfm是不是只能测CPU?
答:主要就是测CPU,但也能看看内存访问、缓存命中啥的,只是没那么直观。
问:跑pfm会影响我电脑性能吗?
答:会有一点,但一般跑几十秒根本感觉不到,别跑太久就行。
问:我跑完了报告不会看,咋办?
答:直接搜那个叫“热点函数”的排序,列表里从上往下看,排前面的就是最该优化的地方。