]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/rb/script/proto_benchmark.rb
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / rb / script / proto_benchmark.rb
CommitLineData
f67539c2
TL
1#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
20require File.dirname(__FILE__) + "/../spec/spec_helper.rb"
21
22require "benchmark"
23# require "ruby-prof"
24
25obj = Fixtures::COMPACT_PROTOCOL_TEST_STRUCT
26
27HOW_MANY = 1_000
28
29binser = Thrift::Serializer.new
30bin_data = binser.serialize(obj)
31bindeser = Thrift::Deserializer.new
32accel_bin_ser = Thrift::Serializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)
33accel_bin_deser = Thrift::Deserializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)
34
35compact_ser = Thrift::Serializer.new(Thrift::CompactProtocolFactory.new)
36compact_data = compact_ser.serialize(obj)
37compact_deser = Thrift::Deserializer.new(Thrift::CompactProtocolFactory.new)
38
39Benchmark.bm(60) do |reporter|
40 reporter.report("binary protocol, write") do
41 HOW_MANY.times do
42 binser.serialize(obj)
43 end
44 end
45
46 reporter.report("accelerated binary protocol, write") do
47 HOW_MANY.times do
48 accel_bin_ser.serialize(obj)
49 end
50 end
51
52 reporter.report("compact protocol, write") do
53 # RubyProf.start
54 HOW_MANY.times do
55 compact_ser.serialize(obj)
56 end
57 # result = RubyProf.stop
58 # printer = RubyProf::GraphHtmlPrinter.new(result)
59 # file = File.open("profile.html", "w+")
60 # printer.print(file, 0)
61 # file.close
62 end
63
64 reporter.report("binary protocol, read") do
65 HOW_MANY.times do
66 bindeser.deserialize(obj, bin_data)
67 end
68 end
69
70 reporter.report("accelerated binary protocol, read") do
71 HOW_MANY.times do
72 accel_bin_deser.deserialize(obj, bin_data)
73 end
74 end
75
76 reporter.report("compact protocol, read") do
77 HOW_MANY.times do
78 compact_deser.deserialize(obj, compact_data)
79 end
80 end
81
82
83 # f = File.new("/tmp/testfile", "w")
84 # proto = Thrift::BinaryProtocolAccelerated.new(Thrift::IOStreamTransport.new(Thrift::MemoryBufferTransport.new, f))
85 # reporter.report("accelerated binary protocol, write (to disk)") do
86 # HOW_MANY.times do
87 # obj.write(proto)
88 # end
89 # f.flush
90 # end
91 # f.close
92 #
93 # f = File.new("/tmp/testfile", "r")
94 # proto = Thrift::BinaryProtocolAccelerated.new(Thrift::IOStreamTransport.new(f, Thrift::MemoryBufferTransport.new))
95 # reporter.report("accelerated binary protocol, read (from disk)") do
96 # HOW_MANY.times do
97 # obj.read(proto)
98 # end
99 # end
100 # f.close
101 #
102 # f = File.new("/tmp/testfile", "w")
103 # reporter.report("compact protocol, write (to disk)") do
104 # proto = Thrift::CompactProtocol.new(Thrift::IOStreamTransport.new(Thrift::MemoryBufferTransport.new, f))
105 # HOW_MANY.times do
106 # obj.write(proto)
107 # end
108 # f.flush
109 # end
110 # f.close
111 #
112 # f = File.new("/tmp/testfile", "r")
113 # reporter.report("compact protocol, read (from disk)") do
114 # proto = Thrift::CompactProtocol.new(Thrift::IOStreamTransport.new(f, Thrift::MemoryBufferTransport.new))
115 # HOW_MANY.times do
116 # obj.read(proto)
117 # end
118 # end
119 # f.close
120
121end