forked from msgpack/msgpack-ruby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbench.rb
More file actions
78 lines (62 loc) · 1.8 KB
/
bench.rb
File metadata and controls
78 lines (62 loc) · 1.8 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# % bundle install
# % bundle exec ruby bench/bench.rb
require 'msgpack'
require 'benchmark/ips'
object_plain = {
'message' => '127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"'
}
data_plain = MessagePack.pack(object_plain)
object_structured = {
'remote_host' => '127.0.0.1',
'remote_user' => '-',
'date' => '10/Oct/2000:13:55:36 -0700',
'request' => 'GET /apache_pb.gif HTTP/1.0',
'method' => 'GET',
'path' => '/apache_pb.gif',
'protocol' => 'HTTP/1.0',
'status' => 200,
'bytes' => 2326,
'referer' => 'http://www.example.com/start.html',
'agent' => 'Mozilla/4.08 [en] (Win98; I ;Nav)',
}
data_structured = MessagePack.pack(object_structured)
class Extended
def to_msgpack_ext
MessagePack.pack({})
end
def self.from_msgpack_ext(data)
MessagePack.unpack(data)
Extended.new
end
end
object_extended = {
'extended' => Extended.new
}
extended_packer = MessagePack::Packer.new
extended_packer.register_type(0x00, Extended, :to_msgpack_ext)
data_extended = extended_packer.pack(object_extended).to_s
Benchmark.ips do |x|
x.report('pack-plain') do
MessagePack.pack(object_plain)
end
x.report('pack-structured') do
MessagePack.pack(object_structured)
end
x.report('pack-extended') do
packer = MessagePack::Packer.new
packer.register_type(0x00, Extended, :to_msgpack_ext)
packer.pack(object_extended).to_s
end
x.report('unpack-plain') do
MessagePack.unpack(data_plain)
end
x.report('unpack-structured') do
MessagePack.unpack(data_structured)
end
x.report('unpack-extended') do
unpacker = MessagePack::Unpacker.new
unpacker.register_type(0x00, Extended, :from_msgpack_ext)
unpacker.feed data_extended
unpacker.read
end
end