原理 ->
在程式編譯或連結時, gcc 在每個函式中加上 mcount 的函式,當每執行函式時,會調用 mcount,mcount 會紀錄所有函式的使用表,並利用函式使用 stack 來紀錄子函式和父函式的地址
以 Gprof 進行編譯, 產生 gmon.out 檔 ->
gcc –o raytracing –pg main.c
執行程式 ->
./raytracing
顯示函式使用表 ->
gprof raytracing gmon.out -b
當有許多程式碼有許多文件一起進行編譯時,要在每個產生.o檔的命令上加上-pg
這些函式都呼叫過千萬以上,所以會對這些函式做最佳化
還未做最佳化的時間
Execution time of raytracing() : 4.409498 sec
使用loop unrolling
Execution time of raytracing() : 3.859694 sec
使用多執行緒