Re: [問題] 以下程式要如何作最佳化?
※ 引述《frankhsu421 (問號)》之銘言:
方法1: switch
switch( a*b ) {
case 1: case 5:
// your codes here
default:
}
優點: 加新的數值比較快, 寫起來清楚
缺點: case label 只能放常數, 要寫 default 區分其他情形
方法2: mask 法
if( ((a*b | 4) ^ ~5) == -1 )
// your codes here
優點: 無
缺點: 受限於二補數系統, 加新數值要再推導新算法
方法3: Boost.Lambda
if( (_1 == 1 || _1 == 5)(a*b) )
// your codes here
優點: 可以將邏輯重複使用
auto one_or_five = _1 == 1 || _1 == 5;
if( one_or_five(a*b) )
// ...
auto one_or_five_or_nine = one_or_five || _1 == 9;
if( one_or_five_or_nine(a*c) )
// ...
缺點: 編譯時間較長, 正常人看不懂
--
≡≡≡≡╔═══╗╔═══╗ ◎ ╔═╗═╗╔═══╗╔═══╗╔╦═╦╗≡≡≡≡
≡金栽經║ ╔╗ ║║ ╔╗ ║╔╗║ ║ ║║ ═ ║║ ╔╗ ║║║ ║║RAINNOUS
≡≡≡≡║ ╚╝ ║║ ╚╝ ║║║║ ║║ ╞╣║ ║║ ║║ ║≡≡≡≡
≡≡≡≡║ ═╣║ ╥ ║║║║ ║ ║║ ═ ║║ ╚╝ ║║ ║ ║≡≡≡≡
≡高佑麗╚═╩═╝╚═╩═╝╚╝╚═╚═╝╚═══╝╚═══╝╚═╩═╝鄭允慧≡
≡≡≡≡≡趙賢榮≡≡≡金智淑≡≡≡RAINBOW≡≡≡盧 乙≡≡≡吳勝雅≡ψmocki
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.221.215
※ 編輯: loveme00835 來自: 140.121.221.215 (05/18 03:43)
推
05/18 14:15, , 1F
05/18 14:15, 1F
推
05/18 14:19, , 2F
05/18 14:19, 2F
→
05/18 14:20, , 3F
05/18 14:20, 3F
→
05/18 14:20, , 4F
05/18 14:20, 4F
→
05/18 15:41, , 5F
05/18 15:41, 5F
→
05/18 17:01, , 6F
05/18 17:01, 6F
→
05/18 17:01, , 7F
05/18 17:01, 7F
→
05/18 17:03, , 8F
05/18 17:03, 8F
推
05/18 17:50, , 9F
05/18 17:50, 9F
→
05/18 17:52, , 10F
05/18 17:52, 10F
→
05/18 20:09, , 11F
05/18 20:09, 11F
推
05/18 21:02, , 12F
05/18 21:02, 12F
推
05/18 22:35, , 13F
05/18 22:35, 13F
→
05/18 23:58, , 14F
05/18 23:58, 14F
→
05/18 23:59, , 15F
05/18 23:59, 15F
→
05/19 06:51, , 16F
05/19 06:51, 16F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 4 篇):
問題
4
24