EPWINGを圧縮する (libdeflateで)
今更な話ですが、EBライブラリに付属のebzipを使えば、EPWINGを圧縮したまま利用する事が可能です。ebzipで圧縮されたEPWINGは、EBライブラリだけでは無く、多くのEPWINGビューアが対応しています。
ebzipのオプションには圧縮レベルがあり、これは圧縮するチャンクの大きさに反映されます。最大値の5ではチャンクのサイズは64KiBです。ebzipでの圧縮にはzlibを利用していますが、ebzipの圧縮レベルとは別に、zlibにも圧縮レベルがあります。ebzipでは圧縮レベルに関係なく一律の値 (Z_DEFAULT_COMPRESSIONによって指定される値で、現在は6) を指定しています。
zlibの圧縮レベルを上げればもっと圧縮できるのではないかと思って試してみましたが、よくて1%強程度しか改善できませんでした。
その時点で諦めてもよかったのですが、zlib以外のライブラリを使ってみてはということで、圧縮率の改善が見込めそうなlibdeflateを使ってみました。
青空てにをは辞典 190309 |
広辞苑第五版 HONMON2 |
広辞苑第五版 HONMONS |
日本語版ウィキペディア Wikip_ja20190301 |
英語版ウィキペディア Wikip_en20190301 |
|
---|---|---|---|---|---|
非圧縮 |
1,764,730,880 | 220,059,648 | 69,834,752 | 33,236,779,008 | 112,939,145,216 |
ebzip -l 5 |
478,746,362 | 72,335,940 | 50,837,283 | 19,927,656,401 | 33,968,207,228 |
非圧縮との比 | 27.1% | 32.9% | 72.8% | 60.0% | 30.1% |
ebuzip -l 5 20190630 |
470,542,862 | 72,172,845 | 50,771,067 | 19,897,758,310 | 33,530,220,494 |
ebzipとの比 | 98.3% | 99.8% | 99.9% | 99.8% | 98.7% |
ebuzip -l 5 libdeflate |
441,842,778 | 67,058,577 | 49,942,504 | 19,661,425,623 | 32,384,784,337 |
ebzipとの比 | 92.3% | 92.7% | 98.2% | 98.7% | 95.3% |
結果は表のような感じで、悪くても1%以上は改善し、書籍によっては約7.7%改善しました。 ebuzip -l 5 20190630 となっているものはzlibの最大圧縮レベルを利用したケースです。 また、HONMON2の非圧縮のサイズはHONMON2を伸長した場合のものです。 微々たる物といえばそうなのですが、スマートフォンなど、ストレージに制限がある場合には有効かもしれません。
EB Library with UTF-8 supportでlibdeflateを利用できるようにしていますので、興味のある方はお試しください。
タグ: EPWING EB Library