看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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: http://ppt.cc/Hm,K 09/18 14:40
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