Rev 30 | Blame | Compare with Previous | Last modification | View Log | RSS feed
## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.#require File.dirname(__FILE__) + "/../spec/spec_helper.rb"require "benchmark"# require "ruby-prof"obj = Fixtures::COMPACT_PROTOCOL_TEST_STRUCTHOW_MANY = 1_000binser = Thrift::Serializer.newbin_data = binser.serialize(obj)bindeser = Thrift::Deserializer.newaccel_bin_ser = Thrift::Serializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)accel_bin_deser = Thrift::Deserializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)compact_ser = Thrift::Serializer.new(Thrift::CompactProtocolFactory.new)compact_data = compact_ser.serialize(obj)compact_deser = Thrift::Deserializer.new(Thrift::CompactProtocolFactory.new)Benchmark.bm(60) do |reporter|reporter.report("binary protocol, write") doHOW_MANY.times dobinser.serialize(obj)endendreporter.report("accelerated binary protocol, write") doHOW_MANY.times doaccel_bin_ser.serialize(obj)endendreporter.report("compact protocol, write") do# RubyProf.startHOW_MANY.times docompact_ser.serialize(obj)end# result = RubyProf.stop# printer = RubyProf::GraphHtmlPrinter.new(result)# file = File.open("profile.html", "w+")# printer.print(file, 0)# file.closeendreporter.report("binary protocol, read") doHOW_MANY.times dobindeser.deserialize(obj, bin_data)endendreporter.report("accelerated binary protocol, read") doHOW_MANY.times doaccel_bin_deser.deserialize(obj, bin_data)endendreporter.report("compact protocol, read") doHOW_MANY.times docompact_deser.deserialize(obj, compact_data)endend# f = File.new("/tmp/testfile", "w")# proto = Thrift::BinaryProtocolAccelerated.new(Thrift::IOStreamTransport.new(Thrift::MemoryBufferTransport.new, f))# reporter.report("accelerated binary protocol, write (to disk)") do# HOW_MANY.times do# obj.write(proto)# end# f.flush# end# f.close## f = File.new("/tmp/testfile", "r")# proto = Thrift::BinaryProtocolAccelerated.new(Thrift::IOStreamTransport.new(f, Thrift::MemoryBufferTransport.new))# reporter.report("accelerated binary protocol, read (from disk)") do# HOW_MANY.times do# obj.read(proto)# end# end# f.close## f = File.new("/tmp/testfile", "w")# reporter.report("compact protocol, write (to disk)") do# proto = Thrift::CompactProtocol.new(Thrift::IOStreamTransport.new(Thrift::MemoryBufferTransport.new, f))# HOW_MANY.times do# obj.write(proto)# end# f.flush# end# f.close## f = File.new("/tmp/testfile", "r")# reporter.report("compact protocol, read (from disk)") do# proto = Thrift::CompactProtocol.new(Thrift::IOStreamTransport.new(f, Thrift::MemoryBufferTransport.new))# HOW_MANY.times do# obj.read(proto)# end# end# f.closeend