linux gprof是一個很強大又方便易用的性能分析工具,可以查看函數的調用次數/執行時間,方便找到程序的性能瓶頸所在。
編譯時加入 -pg 即可,假設產生的程序文件是 app,
運行程序並且在程序結束之後會出現gmon.out之類的輸出文件
然後運行gprof app 即可在stdout上看到性能分析的輸出
輸出量比較大,可以重定向到一個文件來慢慢看
如果需要顯示源碼,則可以使用gprof 的-A選項
如果需要每行分析,還需要加上-g的編譯選項
如果需要對libc的庫函數進行性能分析,需要在鏈接時使用-lc_p代替-lc
如果是daemon形式的程序,最好先把daemon去掉
一般來講,fprintf之類的格式打印和I/O操作最耗費時間,比如log。
系統調用相對來講也比較慢,比如time(),調用54w次耗時0.29s,open調用8w次耗時0.35s,相比之下,_itoa_word調用了1700w次才耗時0.20s