2012-02-09 278 views
1

我目前正在嘗試在我的一個項目中使用zlib進行壓縮。我看了一下基本zlib tutorial,我用下面的語句困惑:zlib和緩衝區大小

塊是僅僅爲了把數據輸入和拉動從zlib的程序數據 緩衝區的大小。較大的緩衝區大小會更有效率,特別是對於inflate()而言更是如此。如果內存可用,則應使用128K或256K字節的順序在 上的緩衝區大小。

的#define CHUNK 16384

在我來說,我將永遠有一個小的緩衝區已經可以在輸出端(約80個字節),並會不斷輸入饋非常小的數據(幾個字節)通過zlib。這意味着我在任何一方都不會擁有更大的緩衝區,但我打算使用更小的緩衝區。

但是我不確定如何解釋「更大的緩衝區大小會更有效率」。這是指編碼效率還是時間/空間效率?

一個想法我必須糾正這種情況將增加一些緩衝層已經累積從輸入和刷新到輸出反覆。然而,這意味着我將不得不積累數據併爲我的數據添加更多級別的複製,這也會影響性能。

現在,如果效率只是指時間/空間效率,我可以衡量兩種方法的影響,並決定使用哪種方法。但是,如果實際的編碼可能受較小緩衝區大小的影響,這可能很難檢測到。

有沒有人有使用zlib與非常小的緩衝區的經驗?

回答

5

這意味着時間效率。如果您給大量輸入和輸出緩衝區充氣,它將在內部使用更快的通貨膨脹代碼。只要你喜歡的緩衝區(甚至大小1),它會工作得很好,但它會更慢。

您可能需要累積輸入並將其輸入以大塊填充。您還需要提供更大的輸出緩衝區。