File: benchmark_generator.rb

package info (click to toggle)
libjson-ruby 1.1.2-1%2Blenny1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 760 kB
  • ctags: 542
  • sloc: ruby: 3,040; ansic: 2,470; makefile: 19
file content (48 lines) | stat: -rwxr-xr-x 1,022 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env ruby

require 'bullshit'
$KCODE='utf8'
if ARGV.shift == 'pure'
  require 'json/pure'
else
  require 'json/ext'
end

class BC_Generator < Bullshit::TimeCase
  include JSON

  warmup    true
  duration  10

  def setup
    a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ]
    puts JSON[a]
    @big = a * 100
  end

  def benchmark_generator_fast
    @result = JSON.fast_generate(@big)
  end

  def reset_benchmark_generator_fast
    @result and @result.size > 2 + 6 * @big.size or raise @result.to_s
  end

  def benchmark_generator_safe
    @result = JSON.generate(@big)
  end

  def reset_benchmark_generator_safe
    @result and @result.size > 2 + 6 * @big.size or raise @result.to_s
  end

  def benchmark_generator_pretty
    @result = JSON.pretty_generate(@big)
  end

  def reset_benchmark_generator_pretty
    @result and @result.size > 2 + 6 * @big.size or raise @result.to_s
  end

  compare :generator_fast, :generator_safe, :generator_pretty
end