什麼是LUT?不解釋,給兩個例子。算法
(1)假設想要對RGB三原色求加權平均v=(b*114 + g*587 + r*299)/1000或者v=(b*117 + g*601 + r*306) >> 10,能夠創建一塊 1BYTE*256*256*256 = 16MB的內存間,存放v值。多線程
(2)假設想計算sin函數值,精度在1.0e-10,能夠把0~90度分紅2^17份,每0.00068664550781度一個值,創建一個 1double*(2^17) = 1MB的內存存放,不是0.00068664550781度整數倍的,能夠線性內插。精度絕對在1.0e-10以上。[0,90]以外的可推算,僅需考慮正負號。函數
問題是,何時應該使用LUT,何時不該該使用它?要考慮的問題不少。LUT須要耗費額外的內存是顯然的,所以我把它分解成了4個問題:線程
(1)當使用LUT比不使用更快速時,什麼狀況下使用LUT?內存
內存資源充足時,計算密集型程序基本上都使用LUT,……資源
(2)當使用LUT比不使用更快速時,什麼狀況下不使用LUT?程序
不是計算密集型程序,CPU資源很充足,須要比LUT能夠提供的更高的精度,爲了保證源代碼簡潔,……源代碼
(3)當使用LUT比不使用更耗時時,什麼狀況下使用LUT?
CPU不僅在幹這一件事,多線程,……
(4)當使用LUT比不使用更耗時時,什麼狀況下不使用LUT?
極其簡單的算法,如求補、求反、求絕對值,內存不足時,……