0
私はRubyのZLibライブラリを使用して、小さな(10k)gzipファイル(StringIOクラスを使用してメモリ上にある)を解凍し、約2.5秒で解凍します。データの圧縮には約100msかかります。なぜ圧縮解除機能が圧縮機能よりも長い時間を要しているのか分かりません。Ruby zlibライブラリ非常に遅いgzipファイル
My機能は、(圧縮されたデータの内容で)StringIOオブジェクトを取得し、(3 - 「3」はint_sizeパラメータによって定義される)の配列を返し、整数のバイトを、等:
def decompress(io, int_size = 3)
array = Array.new(262144)
i = 0
io.rewind
gz = Zlib::GzipReader.new(io)
until gz.eof?
buffer = gz.read(int_size)
array[i] = buffer.unpack('C*').inject { |r, n| r << 8 | n }
i += 1
end
array
end
同じファイルはOSXのコマンドラインで目の瞬きで解凍されます。
があったファイルを解凍するより高速な方法、または多分より速くライブラリまたはそれが今よりもずっとこの出来事速く取得するには、ローカルシステム上にgzipを使用する方法ですか?
できるだけシステムツールを使用すると、これらのツールは驚くほど効率的です。彼らは超最適化され、非常に信頼性が高いです。 – yeyo
ええ、私が思ったものですが、どうしたらいいですか? – Ash
http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html – yeyo