JSON/BSON/MessagePacké度ã»ãµã¤ãºæ¤è¨¼(2)
JSON/BSON/MessagePack 処理速度・データサイズ完全比較 - なぜか数学者にはワイン好きが多い
ãããã説æã足ããªããªã¼ã¨æã£ãã®ã§ï¼
ãã³ããã¼ã¯ã¯ï¼åç´ã«C++ã§å ããªHashã¨ãã¼ã¿ã¨ãã¦ããã¨é·ãç¶ãé åãã·ãªã¢ã©ã¤ãºå¾ï¼å¤ãæ¤è¨¼ãã¤ã¤ãã·ãªã¢ã©ã¤ãºããåç´ãªãã®ã§ãï¼
ã©ããªãã¼ã¿ã使ã£ãããå
·ä½çã«æ¸ãã¾ãï¼
è¨è¨ä¸ã¯ï¼ãããªãã¼ã¿æ§é ãæ³å®ï¼
[ {"key":"0000000000"}, {"v":1, "t":1234567, "n":30}, {"val":[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1234567], [0, 1, ..., 1234567], ... , [0, 1, ..., 1234567] ] } ]
é
åã®è¦ç´ ã3ã¤ããæãï¼æåã¯ãã¼ï¼æ¬¡ããããï¼ææãããªã¥ã¼ã§ãï¼
ãã®ï¼JSON/BSON/MessagePack 処理速度・データサイズ完全比較 - なぜか数学者にはワイン好きが多いï¼C++ã®ããã°ã©ã ãå®è¡ããã¨ï¼json-c.obj, bson.obj, msgpack.objã®3ã¤ã®ãã¡ã¤ã«ãã§ãã¾ãï¼
ãããããã³ãããrubyã¹ã¯ãªããã以ä¸ã§ãï¼
JSONããã³ãããããã°ã©ã ï¼
#!/usr/local/bin/ruby19 require "json" while gets() line = $_.chomp(); jsonobj = JSON.parse(line); key = jsonobj[0]["key"]; v = jsonobj[1]["v"]; t = jsonobj[1]["t"]; n = jsonobj[1]["n"]; valarr = jsonobj[2]["val"]; puts "key: #{key}"; puts "header: version=#{v}, timestamp=#{t}, number=#{n}"; valarr.each_index{|i| print " #{i}: " (0..9).each{|j| print "#{j}:#{valarr[i][j]} "; } puts "timestamp=#{valarr[i][10]}"; } end;
ãã³ãçµæã§ãï¼
./dump_json.rb < json-c.obj | head -32 key: 0000000000 header: version=1, timestamp=1352038522, number=30 0: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 1: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 2: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 3: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 4: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 5: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 6: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 7: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 8: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 9: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 10: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 11: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 12: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 13: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 14: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 15: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 16: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 17: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 18: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 19: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 20: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 21: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 22: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 23: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 24: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 25: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 26: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 27: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 28: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522 29: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038522
BSONããã³ãããããã°ã©ã ï¼
#!/usr/local/bin/ruby19 require "bson" while bsonobj = BSON.read_bson_document(STDIN) key = bsonobj["0"]["key"]; v = bsonobj["1"]["v"]; t = bsonobj["1"]["t"]; n = bsonobj["1"]["n"]; valarr = bsonobj["2"]["val"]; puts "key: #{key}"; puts "header: version=#{v}, timestamp=#{t}, number=#{n}"; valarr.each_index{|i| print " #{i}: " (0..9).each{|j| print "#{j}:#{valarr[i][j]} "; } puts "timestamp=#{valarr[i][10]}"; } end;
ãã³ãçµæã§ãï¼
./dump_bson.rb < bson.obj | head -32 key: 0000000000 header: version=1, timestamp=1352038523, number=30 0: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 1: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 2: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 3: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 4: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 5: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 6: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 7: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 8: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 9: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 10: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 11: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 12: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 13: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 14: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 15: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 16: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 17: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 18: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 19: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 20: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 21: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 22: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 23: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 24: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 25: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 26: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 27: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 28: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523 29: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038523
MessagePackããã³ãããããã°ã©ã ï¼
#!/usr/local/bin/ruby19 require "msgpack" msgpackobj = MessagePack::Unpacker.new(STDIN); msgpackobj.each{|mpobj| key = mpobj[0]["key"]; v = mpobj[1]["v"]; t = mpobj[1]["t"]; n = mpobj[1]["n"]; valarr = mpobj[2]["val"]; puts "key: #{key}"; puts "header: version=#{v}, timestamp=#{t}, number=#{n}"; valarr.each_index{|i| print " #{i}: " (0..9).each{|j| print "#{j}:#{valarr[i][j]} "; } puts "timestamp=#{valarr[i][10]}"; } };
ãã³ãçµæã§ãï¼
./dump_msgpack.rb < msgpack.obj | head -32 key: 0000000000 header: version=1, timestamp=1352038524, number=30 0: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 1: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 2: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 3: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 4: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 5: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 6: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 7: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 8: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 9: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 10: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 11: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 12: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 13: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 14: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 15: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 16: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 17: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 18: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 19: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 20: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 21: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 22: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 23: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 24: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 25: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 26: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 27: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 28: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524 29: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 timestamp=1352038524
Rubyã®çç£æ§ã®é«ãã¯åãã§ããï¼
ãã®3種ã®ãã³ãããã°ã©ã ã¯ï¼ã»ã¨ãã©å·®åãç¡ãã®ã§ï¼åè¨ã§5åãããã§ä½ãã¦ãã¾ãã¾ããï¼
Perlã®åå¨æ義ã£ã¦ï¼ãªããªãã§ããããï¼