Class: FFI_Yajl::Benchmark::Parse

### Home Classes Methods

### In Files

- lib/ffi_yajl/benchmark/parse.rb

### Parent

Object

### Methods

- #run

### Files

- LICENSE
- MIT-LICENSE

### Class/Module Index

Quicksearch

- FFI_Yajl
- FFI_Yajl::Benchmark
- FFI_Yajl::Benchmark::Encode
- FFI_Yajl::Benchmark::EncodeProfile
- FFI_Yajl::Benchmark::Parse
- FFI_Yajl::Benchmark::ParseProfile
- FFI_Yajl::Benchmark::ParseProfileRubyProf
- FFI_Yajl::EncodeError
- FFI_Yajl::Encoder
- FFI_Yajl::FFI
- FFI_Yajl::FFI::Encoder
- FFI_Yajl::FFI::Parser
- FFI_Yajl::ParseError
- FFI_Yajl::Parser
- FFI_Yajl::Platform
- FFI_Yajl::YajlCallbacks
- JSON
- JSON::GeneratorError
- JSON::JSONError
- JSON::ParserError
- Array
- Bignum
- Date
- DateTime
- FalseClass
- Fixnum
- Float
- Hash
- Kernel
- NilClass
- Object
- String
- Symbol
- Time
- TrueClass

No matching classes.

# FFI_Yajl::Benchmark::Parse

### Public Instance Methods

run() click to toggle source

    # File lib/ffi_yajl/benchmark/parse.rb, line 38
      def run
        filename = File.expand_path(File.join(File.dirname(__FILE__), "subjects", "item.json"))
        json = File.new(filename, 'r')
        json_str = json.read

        times = ARGV[1] ? ARGV[1].to_i : 10_000
        puts "Starting benchmark parsing #{File.size(filename)} bytes of JSON data #{times} times\n\n"
        Benchmark.bmbm { |x|
          x.report {
            puts "FFI_Yajl::Parser.parse (from a String)"
            times.times {
              FFI_Yajl::Parser.parse(json_str)
            }
          }
    #      ffi_parser = FFI_Yajl::Parser.new
    #      x.report {
    #        puts "FFI_Yajl::Parser#parse (from a String)"
    #        times.times {
    #          json.rewind
    #          ffi_parser.parse(json.read)
    #        }
    #      }
          if defined?(Yajl::Parser)
            x.report {
              puts "Yajl::Parser.parse (from a String)"
              times.times {
                Yajl::Parser.parse(json_str)
              }
            }
            io_parser = Yajl::Parser.new
            io_parser.on_parse_complete = lambda {|obj|} if times > 1
            x.report {
              puts "Yajl::Parser#parse (from an IO)"
              times.times {
                json.rewind
                io_parser.parse(json)
              }
            }
            string_parser = Yajl::Parser.new
            string_parser.on_parse_complete = lambda {|obj|} if times > 1
            x.report {
              puts "Yajl::Parser#parse (from a String)"
              times.times {
                json.rewind
                string_parser.parse(json_str)
              }
            }
          end
          if defined?(Oj)
            x.report {
              puts "Oj.load"
              times.times {
                json.rewind
                Oj.load(json.read)
              }
            }
          end
          if defined?(JSON)
            x.report {
              puts "JSON.parse"
              times.times {
                json.rewind
                JSON.parse(json.read, :max_nesting => false)
              }
            }
          end
          if defined?(ActiveSupport::JSON)
            x.report {
              puts "ActiveSupport::JSON.decode"
              times.times {
                json.rewind
                ActiveSupport::JSON.decode(json.read)
              }
            }
          end
          x.report {
            puts "YAML.load (from an IO)"
            times.times {
              json.rewind
              YAML.load(json)
            }
          }
          x.report {
            puts "YAML.load (from a String)"
            times.times {
              YAML.load(json_str)
            }
          }
          if defined?(Psych)
            x.report {
              puts "Psych.load (from an IO)"
              times.times {
                json.rewind
                Psych.load(json)
              }
            }
            x.report {
              puts "Psych.load (from a String)"
              times.times {
                Psych.load(json_str)
              }
            }
          end
        }
        json.close

      end

[Validate]

Generated with the Darkfish Rdoc Generator 2.