剖析 angr 的效能 angr 是樓主寫的一個程式,功能是記錄使用者花在每個程式的時間 最近樓主覺得這個程式跑的太慢了想來加速一下 發現這個程式會讓你在執行任何命令前先花個0.22秒做
剖析 angr 的效能
angr 是樓主寫的一個程式,功能是記錄使用者花在每個程式的時間
最近樓主覺得這個程式跑的太慢了想來加速一下
發現這個程式會讓你在執行任何命令前先花個0.22秒做記錄
其實這個程式並不是真的需要更快,樓主主要用這個程式在手機上
記錄他手機執行各種程式的時間。
一開始他決定使用 cargo-profiler
他發現大部份時間用在記憶體配置,且很可能是在BTreeMap裡
然後再用 Linux perf 跑看看,發現分析結果與 cargo-profiler 相同
再用火焰圖跑看看
發現augr只是因為需要加載的檔案變多而變慢!
在這一點上,樓主決定花點時間調查問題來修復它。他添加了一些代碼來追踪加載時間,
這時的樓主想了很多方法要來優化檔案加載數量過多的問題。
在進行了一些更麻煩的調查後,樓主確定程式的大部分時間都在執行,而不是加載文件。
最後他發現了主要原因在 clone ,樓主很大量的使用了clone
在做了必要的改動,減少了大量的clone之後,效能得到了提升
優化到了 0.02 秒!
剖析性能很有趣!在這種情況下,只需進行兩個簡單的更改並獲得10倍的改進。
本來樓主認為需要各種瘋狂的緩存系統才能讓augr更快。但並不需要那樣的東西!
Read more
glint 用Rust編寫的commit 提示工具
可以更智慧的送交git
Read more