Skip to content

Instantly share code, notes, and snippets.

@mame
Created December 13, 2015 17:49
Show Gist options
  • Save mame/4aa783333c076f3a1199 to your computer and use it in GitHub Desktop.
Save mame/4aa783333c076f3a1199 to your computer and use it in GitHub Desktop.
require 'benchmark'
class MemberClass
def initialize(a, b, c, d, e, f, g)
@a = a
@b = b
@c = c
@d = d
@e = e
@f = f
@g = g
end
attr_reader :a, :b, :c, :d, :e, :f, :g
end
StructClass = Struct.new(:a, :b, :c, :d, :e, :f, :g)
COUNT = 10000000
Benchmark.bmbm do |x|
x.report("member") do
m = MemberClass.new(0, 0, 0, 0, 0, 0, 0)
COUNT.times do
m.a + m.b + m.c + m.d + m.e + m.f + m.g
end
end
x.report("struct") do
m = StructClass.new(0, 0, 0, 0, 0, 0, 0)
COUNT.times do
m.a + m.b + m.c + m.d + m.e + m.f + m.g
end
end
end
# Rehearsal ------------------------------------------
# member 1.430000 0.000000 1.430000 ( 1.433829)
# struct 1.630000 0.000000 1.630000 ( 1.624923)
# --------------------------------- total: 3.060000sec
#
# user system total real
# member 1.390000 0.000000 1.390000 ( 1.390638)
# struct 1.740000 0.000000 1.740000 ( 1.730032)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment