圧縮試験:LZMA vs ZLIB
3535 ワード
転載するhttp://blog.domlib.com/articles/388.html
Flash Player 11.4はその後、LZMAの圧縮サポートを提供しました.ネットでは、この圧縮フォーマットの圧縮率はZLIBよりずっと高いと言われています.科学的ではないような気がしますが、自分でテストしたほうがいいです.テストの時に天地会からのas版LZMA解圧類を同時に加えました.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
zlib圧縮:255 ms size:5.08 MB zlib解圧:12 ms lzma圧縮:1974 ms size:5.11 MB lzma解圧:399 ms LZMA.AS解圧:27381 ms
この結果は本当にがっかりしました.テストの問題があるかどうかは分かりません.しかも解圧時間は数十倍も長い.as版のLZMAの解凍時間は更に受け入れられません.やはり引き続きzlibを使いましょう.
Flash Player 11.4はその後、LZMAの圧縮サポートを提供しました.ネットでは、この圧縮フォーマットの圧縮率はZLIBよりずっと高いと言われています.科学的ではないような気がしますが、自分でテストしたほうがいいです.テストの時に天地会からのas版LZMA解圧類を同時に加えました.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package
{
import
flash.display.Sprite;
import
flash.utils.ByteArray;
import
flash.utils.CompressionAlgorithm;
import
flash.utils.getTimer;
import
org.flexlite.domUtils.FileUtil;
import
org.flexlite.domUtils.StringUtil;
/**
*
* @author DOM
*/
public
class
CompressTest
extends
Sprite
{
public
function
CompressTest()
{
var
bytes:ByteArray = FileUtil.openAsByteArray(
"doc.json"
);
var
t:
int
= getTimer();
bytes.compress();
trace
(
"zlib :"
+(getTimer()-t)+
"ms"
+
" size:"
+StringUtil.toSizeString(bytes.length,
2
));
t = getTimer();
bytes.uncompress();
trace
(
"zlib :"
+(getTimer()-t)+
"ms"
);
t = getTimer();
bytes.compress(CompressionAlgorithm.LZMA);
trace
(
"lzma :"
+(getTimer()-t)+
"ms"
+
" size:"
+StringUtil.toSizeString(bytes.length,
2
));
t = getTimer();
bytes.uncompress(CompressionAlgorithm.LZMA);
trace
(
"lzma :"
+(getTimer()-t)+
"ms"
);
bytes.compress(CompressionAlgorithm.LZMA);
t = getTimer();
bytes = LZMA.decode(bytes);
trace
(
"LZMA.AS :"
+(getTimer()-t)+
"ms"
);
}
}
}
出力結果:zlib圧縮:255 ms size:5.08 MB zlib解圧:12 ms lzma圧縮:1974 ms size:5.11 MB lzma解圧:399 ms LZMA.AS解圧:27381 ms
この結果は本当にがっかりしました.テストの問題があるかどうかは分かりません.しかも解圧時間は数十倍も長い.as版のLZMAの解凍時間は更に受け入れられません.やはり引き続きzlibを使いましょう.