Re: [問題] 以下程式要如何作最佳化?
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)
→
05/18 14:19, , 1F
05/18 14:19, 1F
→
05/18 15:35, , 2F
05/18 15:35, 2F
→
05/18 21:04, , 3F
05/18 21:04, 3F
→
05/18 22:23, , 4F
05/18 22:23, 4F
→
05/19 13:38, , 5F
05/19 13:38, 5F
→
05/19 15:51, , 6F
05/19 15:51, 6F
→
05/19 16:53, , 7F
05/19 16:53, 7F
→
05/19 18:10, , 8F
05/19 18:10, 8F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 4 篇):
問題
4
24