ruby/benchmark/object_allocate.yml

49 строки
1.2 KiB
YAML

prelude: |
class Eight
8.times { include(Module.new) }
end
class ThirtyTwo
32.times { include(Module.new) }
end
class SixtyFour
64.times { include(Module.new) }
end
class OneTwentyEight
128.times { include(Module.new) }
end
class OnePositional
def initialize a; end
end
class TwoPositional
def initialize a, b; end
end
class ThreePositional
def initialize a, b, c; end
end
class FourPositional
def initialize a, b, c, d; end
end
class KWArg
def initialize a:, b:, c:, d:
end
end
class Mixed
def initialize a, b, c:, d:
end
end
# Disable GC to see raw throughput:
GC.disable
benchmark:
allocate_8_deep: Eight.new
allocate_32_deep: ThirtyTwo.new
allocate_64_deep: SixtyFour.new
allocate_128_deep: OneTwentyEight.new
allocate_1_positional_params: OnePositional.new(1)
allocate_2_positional_params: TwoPositional.new(1, 2)
allocate_3_positional_params: ThreePositional.new(1, 2, 3)
allocate_4_positional_params: FourPositional.new(1, 2, 3, 4)
allocate_kwarg_params: "KWArg.new(a: 1, b: 2, c: 3, d: 4)"
allocate_mixed_params: "Mixed.new(1, 2, c: 3, d: 4)"
allocate_no_params: "Object.new"
loop_count: 100000