2016q3 Homework1 (raytracing) === # 熟悉Gprof * 原理 -> 在程式編譯或連結時, gcc 在每個函式中加上 mcount 的函式,當每執行函式時,會調用 mcount,mcount 會紀錄所有函式的使用表,並利用函式使用 stack 來紀錄子函式和父函式的地址 * 以 Gprof 進行編譯, 產生 gmon.out 檔 -> `gcc –o raytracing –pg main.c` * 執行程式 -> `./raytracing` * 顯示函式使用表 -> `gprof raytracing gmon.out -b` * -b 輸出圖表中每個函式的詳细描述。 * -p 只輸出函式的使用表(Call graph 的那部分訊息)。 * -q 只輸出函式的時間消耗列表。 * -e Name 输出函式Name 及其子函式的使用表(除非它們有未被限制的其它父函式)。可以给定多个 -e 標誌。一个 -e標誌只能指定一个函式。 * -z 顯示使用次數為零的例程(按照使用次數和累積時間計算)。 * 當有許多程式碼有許多文件一起進行編譯時,要在每個產生.o檔的命令上加上-pg # 對Ray tracing做最佳化 * **gprof的結果圖**  這些函式都呼叫過千萬以上,所以會對這些函式做最佳化 * 還未做最佳化的時間 Execution time of raytracing() : 4.409498 sec * 使用loop unrolling Execution time of raytracing() : 3.859694 sec * 使用多執行緒
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up