①Linux (Core2Duo):Windows XPの時代に購入したTSUKUMOのゲーム用PC。E6850 3GHzのCPU、メモリ2GB搭載。
②Mac OSX 10.6.8 (Core2Duo):初代Mac Book Air 1.86GHz、メモリ2GB搭載。
圧縮するデータはテストプログラム内でダミーとして生成します。(規則性のあるデータと乱数の2種類、データサイズも100KBと500KBの2種類、合計4種のデータをとりました。)
1.規則性のあるデータ
100KB→5299Bに圧縮された
①のPC=圧縮(280us)/解凍(75us)
②のPC=圧縮(140us)/解凍(180us)
500KB→25987Bに圧縮された
①のPC=圧縮(1.3ms)/解凍(470us)
②のPC=圧縮(480us)/解凍(730us)
2.乱数のデータ
100KB→102409Bに圧縮された(+9Byte増えてる!?)
①のPC=圧縮(120us)/解凍(40us)
②のPC=圧縮(220us)/解凍(120us)
500KB→512027Bに圧縮された(+27B増えてる!?)
①のPC=圧縮(480us)/解凍(280us)
②のPC=圧縮(750us)/解凍(520us)
Linuxの方はほぼ期待通りの結果がでました。(圧縮より解凍が圧倒的に速い)しかしMac OSXの結果がよくわかりません。特に規則性のあるデータの場合に解凍の方に時間がかかっています。処理時間の計測にLinuxと同じgettimeofday()関数を使ったのですが、Macの場合何か問題があるのかもしれません。
またもっとわからないのが、snappy自体で乱数データの場合かえって圧縮後のデータが増えてしまっています。何コレ?snappyでは圧縮前に圧縮後のサイズを調べる関数(CのAPIで、size_t snappy_max_compressed_length())をCallしていますが、ここで圧縮後のサイズが減らないようならCPU時間を使うだけ無駄なので、圧縮をあきらめた方がいい気がします。
このほか、Windows7にもインストールしてみましたが、Windowsはタイマの取得精度が頑張ってもms単位なのでちょっとまともに時間計測ができません。
0 件のコメント:
コメントを投稿