зеркало из https://github.com/github/ruby.git
49 строки
1.2 KiB
YAML
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
|