精華區beta CSSE 關於我們 聯絡資訊
※ 引述《kola12 (kola)》之銘言: : 這個主題我覺得原po的問題還蠻簡單的 : 原po就是覺得他多花點時間把程式最佳化,可以縮短程式執行的時間 : 但是你能把程式最佳到什麼程度? : 真的如原po所想的=>他花在程式最佳化的時間=程式增進效率後縮短的執行時間? : 這個問題很難評估 : 所以最好的做法就是用另外一台電腦跑程式 : 一邊跑一邊改 : 一般軟體開發時間是算人力/時,沒在算程式執行的時間的 : 所以這邊用軟體專案管理的方法來解決這個問題 : 應該是沒有什麼意義的 我的表達能力似乎很差 / \ 用例子來看好了, 對於一個函數, f(x,y)=x+y-x*x+x*y, 如果我們現在要對此函數求值, 又假設運算元都是二元運算子, 函數己儲存在二元樹中, 那程式的寫法可以用最簡單的遞迴來做, 也可以用stack來做, 遞迴的程式碼簡單好寫 function foo(node){ if node is an operator return (foo(left) op foo(right)) otherwise return node value } 用stack的話, 乘g起來很囉嗦, 但不管是用STL的stack還是自己建的stack, 速度都會變快, 變快的時間有多少? 不知道。 但這是確定會變快的選擇, 如果我明天就要把程式交出去, 那我只好用遞迴, 簡單又不容易出錯, 但是如果我要要求效率, 我會自己建一個stack類別來最佳化我要的運算。 又如排序, 泡沫排序法很快就能寫好, 換成quick sort在理論上可以得到比較好的表現, 但是如果整個程式也就sort這麼一次, 而且sort的資料量不大, 那我花時間寫quick sort的意義就不大, 當然我是假設不用元件或套件或函式庫, 要自己寫的時候。 大家都知道建index可以很快找到資料, 但是我要怎麼評估有沒有必要用hashing? 資料量不夠大的時候, 就沒意義了, 差距大概只有0.0001秒吧 orz 花在hasing的時間變的沒意義了。 其實我一開始想知道的就是, 能不能在寫程式前就知道這樣寫有沒有意義? 有專門的書或文章在探討這一類的問題嗎? 或者板友們有可以分享的心得嗎? 現在倒是看到了不少建議與心得, 感激 m(_ _)m 新問題~ 80/20法則適用於我的這個問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 70.171.224.50
taiwancat:%80的人在BBS找答案 能回答問題的那%20的人在認真讀書.. 09/13 23:01
xam:programming pearl 09/13 23:17