把一堆if 判斷隔出來設為一個函式 , 這樣會跑比較快嗎?

我選2

以現在電腦的效能if這種判斷是每秒少說可以作數千次
你才20幾次

所以程式的可讀性 維護姓 遠大於效率

pccenter1204 wrote:
假設我需要有一堆的i...(恕刪)


依照老師那時候交給我的觀念是~
寫1是的確會比較快~
但是這樣會造成日後維護不易

寫2吧
可以給各個函式命名
幫助日後自己或其他工程師方便了解程式架構~
而且
以目前電腦速度
呼叫函式的時間幾乎可以忽略了 = =

pccenter1204 wrote:
假設我需要有一堆的if判斷,
if{ if{ if{....... }}}}
大約8~20個判斷,
請問哪個執行速度會比較快呢?


程式碼大小 用 byte 計算 , 請選 1





萬一程式碼大小, 用 10MB 為單位, 請選 2 , for 維護考量~~




用20個if的狀況我還真沒遇過,
可以分享下是什麼狀況嗎?

不過單純就你提的問題來說,個人經驗選擇會是 1
李鴻源:為了選票,政府做的事情是民眾想要他們做的,而不是在做對的事情
如果看一下像 Apache 的原始碼
有時有幾十個條件它也是像下面這樣
if (ch == CH_UTF16LE) ret = "UTF-16LE";
else if (ch == CH_UTF16BE) ret = "UTF-16BE";
else if (ch == CH_UNIX) ret = lp_unix_charset();
else if (ch == CH_DOS) ret = lp_dos_charset();
else if (ch == CH_DISPLAY) ret = lp_display_charset();
else if (ch == CH_UTF8) ret = "UTF8";

if 比較靈活可以隨時改變判斷式中要判斷的類型
而 switch 則一開始就固定了不一樣的
而且不同的語言 switch 作用也不同
有的這一項執行完就跳出,有的是會繼續的
在PC上跑的程式現在不用管速度啦,
維護比較重要,
包括連i++這種語法我都不用了,直接寫i=i+1,
寫到看程式用直覺,不用動腦筋.

pccenter1204 wrote:
假設我需要有一堆的i...(恕刪)


指標函式~~

pccenter1204 wrote:
假設我需要有一堆的i...(恕刪)


20幾個算很多,我很討厭滾滑鼠找程式碼,所以我選2
2~5個之內 我才會全寫在一起
程式最佳化不是看行數的啊....
先分析程式跑起來, 哪些地方佔掉時間最多, 跑過的次數最多,
再來研究有沒有方法跑得更快, 這是程式最佳化的基本....

很多程式都是百分之80的時間只執行其中百分之20的程式碼
(百分之幾請自己填空), 就是說程式在執行的時間裏, 基本上
都是重覆跑一小段程式碼而已, 先做分析再來決定怎麼最佳化.
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。
pccenter1204 wrote:
假設我需要有一堆的i...(恕刪)

重構 - 改善既有程式的設計 (Refactoring: Improving The Design of Existing code) Martin Fowler著,侯捷/熊節 譯

這本我認為是原始人進化為合格程式設計師的必讀之書

看完之後你會發現...當初好傻好天真
重點是現在還有很多教授,老師...好傻好天真
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!