什麼時候該用LUT(Look Up Table)技術?

什麼是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?

極其簡單的算法,如求補、求反、求絕對值,內存不足時,……

相關文章
相關標籤/搜索