芭樂永生

2008年12月25日 星期四

ZLIB::inflate Version FastCpy8

zlib:3BC78A9,5830144  ;FastCpy8 的成果
zliX:5025CC2,5830144,0 ;原始 ZLIB 的成果
asm :4237579,5830144,0 ;自己手工的 inflate_asm 加 FastCpy8
C  :60FEFA8,5830144,0 ;自己手工的 inflate_asm 改寫成 C

大概去年吧, 開始找了 deflate 這些資料,
雖然在 compress 不是很了解,
不過 uncompress 卻有更多加強的空間,
當然這也是從 NRV 解壓縮 x86 assembly 所得到的知識.

手工的 inflate_asm 也是我軍旅中空閒所刻出來的,
當然效能當初是已經算是贏 ZLIB::inflate,
但是因為 PNG 的 Mulitple IDAT 是依賴 ZLIB 的 FLUSH,
開始在 ZLIB 的 inflate_asm 改善,
結果發現竟然比自己手工的 inflate_asm 強太多了.

當然主要原因
1.ZLIB 的 Table 已經把 Length 和 Distance 做好了.
2.ZLIB 的 BitStream Buffer 是 MMX 的 64bit 空間.

當然可惜的是 SSE 的 128bit 上面 Shift 沒有支援到
Double Quad Word, 不然應該可以更好.

標籤:

0 Comments:

張貼留言

<< Home