5
我跑PERF以下空的程序分析,PERF的統計給出了不同數量的指令的每次運行
#include <stdio.h>
int main() {
}
編譯和運行PERF統計./a.out我得到了下面的輸出說法(以及之後其他數據,如週期數,任務時鐘等):
418,869 instructions # 0.87 insns per cycle
的指令變化期間每「PERF」在相同的小精靈數目分析。
我的實際需要是在我寫的特定函數中找到指令的數量。所以我會從新程序中的指令數中減去上面的數字(我可以用在gcc中使用-S標籤創建的program.s中的行數,但在查看perf行爲後我感到困惑)
爲什麼指令的數量不一致,確切的不一致?
更新 我跟着man page給使用perf_event_open(c)中
perf_event_open()給了我一個精確的計數,它等於.s文件中的指令數。 perf stat -e指令:u a.out每次都會給出不同的計數值,但變化並不像問題中解釋的場景那麼大。 – Vignesh 2014-10-12 23:04:27
使用perf_event_open你完全nkwo你測量。對於即使在添加之後仍然存在的(小)變化:u我猜在程序中的主函數被調用之前,用戶空間中仍然有許多事情已經完成,並且這裏可能有一些變化。 – 2014-10-13 11:04:06