zlib压缩解压缩代码
require "zlib"
include Zlib
long_string = ("abcde"*71 + "defghi"*79 + "ghijkl"*113)*371
puts long_string.size # 559097
#压缩字符串
s1 = Deflate.deflate(long_string,6)
# Zlib::Deflate.deflate(string[, level])
#Compresses the given string. Valid values of level are NO_COMPRESSION, BEST_SPEED, BEST_COMPRESSION, DEFAULT_COMPRESSION, and an integer from 0 to 9 (the default is 6).
puts s1.size
#解压缩字符串
s2 = Inflate.inflate(s1)
puts s2
puts s2.size
lzo压缩解压缩
项目地址https://bitbucket.org/winebarrel/lzo-ruby
安装插件之前需要先安装lzo
tar -zxvf lzo-2.04.tar.gzcd lzo-2.04
./configure --enable-shared
make && make install
安装rubylzo
gem install lzoruby
测试代码
require 'lzoruby'
require 'open-uri'
source = open('http://www.baidu.com/') {|f| f.read }
puts "uncompress size: #{source.length}"
# compress
comp_data = LZO.compress(source)
puts "compress size: #{comp_data.length}"
# compress (level 9)
comp9_data = LZO.compress(source, 9)
puts "compress size (L9): #{comp9_data.length}"
# decompress
decomp_data = LZO.decompress(comp_data)
puts "decompress size: #{decomp_data.length}"
puts "decomp_data success?: #{source == decomp_data}"
# decompress (level 9)
decomp9_data = LZO.decompress(comp9_data)
puts "decompress size (L9): #{decomp9_data.length}"
puts "decomp_data success? (L9): #{source == decomp9_data}"