作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 執行時所耗費時間長短問題
時間Sat Sep 18 13:29:22 2010
※ 引述《secret999 (Je suis désol)》之銘言:
: 謝謝大家的回應
: 不過這不是在pc上跑的...
: 省些ns累計到us甚至近1ms...就能大幅改善我的問題@@
: 所以才發這篇文 問各位版大們
: 希望能夠知道耗費時間
: 以及一些省時技巧
做最佳化有幾項原則:
1. 先求結果正確
這道理很簡單,因為先寫出一個慢但是結果正確的版本,
你之後要做最佳化的時候才有比較的對象。
如果你一開始就一邊做optimization一邊設計程式,
一年後發現把所有自作聰明的optimization拿掉後程式反而跑更快
那就真的哭哭了
2. 先從演算法的層級去降低 complexity
這應該不用說明
3. 使用 profiling 去分析程式中的效能瓶頸
我想這是你要問的重點,profiling 是 compiler 提供的一項功能,
可以在所有的函式呼叫前後插入計時點,幫你計算你的程式在執行過程中,
這些函式分別花了多少時間。
先使用 profiling 找出程式中最花時間的部份,你才能對症下藥。
如果你的程式是因為大量的 cache miss 導至效能不彰,
那你把運算部份的程式碼改得再快也沒用。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.69.155
→ xatier:The First Rule of Program Optimization: Don't do it. 09/18 14:42
→ xatier:The Second Rule of Program Optimization (for experts 09/18 14:42
→ xatier:only!): Don't do it yet.” -- Michael A. Jackson 09/18 14:42
推 secret999:謝謝提供的方法, 之前已經改過演算法 時間降為原本1/12 09/18 15:04
→ secret999:因為自己寫C時間不長, 想獲得一些東西, 順便改善coding 09/18 15:06
→ secret999:style, 有些部份改成易閱讀 又能省時 便可一舉兩得 09/18 15:06
→ secret999:平常寫code會偏向讓人易懂, 不過現在需要的是速度 09/18 15:07
→ secret999:再次感謝大家的回覆^^ 09/18 15:08