我最近在學習llvm。
我有一個 C 代號cal.c。現在,我對這段代碼應用了兩個不同的優化程序,并生成了兩個不同的 IR 代碼 -cal1.ll和cal2.ll.
我如何比較它們之間的性能?
我嘗試比較指令數和指令成本,但它們中的那些都不是很好的功能。我認為指令數和性能、指令成本和性能之間沒有關系。
那么,我如何比較兩個 IR 之間的性能?
我不需要知道運行時間。我只想知道哪個更快。
uj5u.com熱心網友回復:
這是一個難題,通常比在實際硬體上運行代碼并測量哪個更快更難。或多或少歸結為使用“筆和紙”模擬硬體。您將需要目標系統的詳細模型,包括管道和快取行為等內容,然后使用此模型來計算每個執行指令的成本。
uj5u.com熱心網友回復:
llvm-mca嘗試通過重用 LLVM 編譯器的 CPU 管道模型來靜態估計匯編代碼的性能:
$ llvm-mca -mcpu=skylake foo.s
Iterations: 300
Instructions: 900
Total Cycles: 610
Total uOps: 900
正如其他人所提到的,由于缺乏快取和分支預測模型、CPU 管道模型的不精確等,估計會不精確(通常非常不精確)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/341808.html
