
Apple Silicon (M1/M2) 上 Zig 性能分析生存指南
M1/M2 芯片玩 Zig,性能分析如履薄冰?这几把“瑞士军刀”请收好! 嘿,兄弟,如果你正揣着一台崭新的 Apple Silicon Mac,满怀激情地写着 Zig 代码,那么恭喜你,你选择了一条风景独特却又充满挑战的“朝圣”之路。 在这条路上,你很快会发现一个残酷的现实:当你想搞清楚你的代码为什么慢、瓶颈在哪里时,你会发现自己仿佛置身于一片广袤的性能分析荒漠。那些在 Linux 大神们手中出神入化的神器——perf、valgrind、tracy(完全体)——到了 macOS 这片新大陆,要么水土不服,要么干脆罢工。 perf?人家是 Linux 内核的亲儿子,跟你 aarch64 上的 macOS 不熟。valgrind?对不起,arm64 的 macOS 它也玩不转。tracy?虽然能用,但最关键的调用栈采样功能却被阉割了,像个被拔了牙的老虎。 是不是感觉手里的 M2 Pro 瞬间就不香了?别急着从入门到放弃,这片荒漠里,还是有几片顽强的“绿洲”的。今天,我就给你介绍这几位能在苹果芯上助你一臂之力的“侠客”。 快枪手:Samply 当你需要快速给你的程序“把个脉”,看看它大概在忙些什么时,Samply 就是那位二话不说、拔枪就射的牛仔。 它是一个采样分析器,默认每毫秒(1000Hz)对你程序的堆栈进行一次快照,不管你的 CPU 是在摸鱼还是在忙活,它都记录在案。最赞的是,它背后依赖的是苹果自家的 Mach 接口,并且用上了 Firefox Profiler 作为 UI,界面功能丰富,火焰图、调用树、源码查看一应俱全。 怎么请这位枪手出山? 用 Homebrew 就一行命令: brew install samply 怎么用? 直接让它启动你的程序: samply record <你的程序> 或者附加到已经运行的进程上(需要一些额外设置): samply record -p <进程ID> 一句话总结: 日常性能问题的首选侦察兵,快速、直观、好上手。 “土”味大杀器:poop 你没看错,这工具就叫 poop (Performance Optimizer Observation Platform 的缩写)。别笑,这可是 Zig 语言之父 Andrew Kelley 亲自打造的神器。 ...