作者applecool (noOneKnows)
看板C_and_CPP
標題Re: [問題] 以下程式要如何作最佳化?
時間Sat May 18 09:23:14 2013
const int axb = a * b;
判斷式裡面機率高的放前面
if(axb == 1 || axb == 5)
{
...
}
我覺得這樣是最好的寫法,
容易維護,可讀性高,沒有什麼缺點
如果 axb 不能宣告成 const
有時候會用 1 == axb 來避免少打等號,不過有些場合這已屬少見的用法了
(因為許多人會開編譯器警告來提醒)
但
如果 axb 是某些值的機率很高但是判斷式很複雜(或者牽涉到耗時動作如IO)時
可以考慮用類似以下寫法
switch(const int axb = a * b) {
default:
if(複雜的判斷式) {
case 某一個機率很高的數:
...
} else if(也很複雜的判斷式) {
case 另外機率很高的數:
...
} else {
case 大概是第三個機率很高的數
...
case 機率很高但啥也不想做的數記得加分號當空的句子:
;
}
}
switch 就是多重 goto
分支少建表來跳可能不划算
最後,絕不要在 C++ code 裡面寫中文,不然許功蓋老師和他的同事會衝出來罵我們
※ 編輯: applecool 來自: 123.110.214.94 (05/18 09:50)
→ uranusjr:這年頭大家都存 UTF-8 了 05/18 14:19
→ azureblaze:就我所知msvc預設還是存ascii 05/18 15:35
→ dendrobium:這種變數名稱其實很不好, 因為算式改了變數名也得改 05/18 21:04
→ masan22305:許功蓋XD 05/18 22:23
→ cuteclare:註解不能中文嗎? 05/19 13:38
→ applecool:應該說只能英文, 因為CODE可能被別人存成任何格式 05/19 15:51
→ AntaresStar:格式存錯就不能編譯 很合理啊 XD 05/19 16:53
→ applecool:格式存錯還是可能通過編譯得到非預期的結果 05/19 18:10