Sha256: 2460bad962d3a7cee13fc9356b4039f1a57734513c445b8cf55e87b6d9b2f251

Contents?: true

Size: 994 Bytes

Versions: 2

Compression:

Stored size: 994 Bytes

Contents

#!/usr/bin/env ruby

#require 'rubygems'
require 'Grok'
#require 'ruby-prof'
require 'pp'

#RubyProf.start  

iterations = 200
pattern = "[A-z0-9_-]*\\[[0-9]+\\]"

grok = Grok.new
grok.add_pattern("FOO", pattern)
grok.compile("%{FOO}")

rubyre = Regexp.new("(?<foo>#{pattern})")
#rubyre = Regexp.new(pattern)

matches = { :grok => 0, :rubyre => 0 }
def time(iterations, &block)
  start = Time.now
  data = File.open("/b/messages").readlines()
  0.upto(iterations) do |i|
    data.each do |line|
      block.call(line)
    end
  end
  return Time.now - start
end

groktime = time(iterations) do |line|
  m = grok.match(line)
  if m
    matches[:grok] += 1
    m.captures["FOO"]
  end
end

rubyretime = time(iterations) do |line|
  m = rubyre.match(line)
  if m 
    matches[:rubyre] += 1
    m["foo"]
  end
end

puts "Grok: #{groktime}"
puts "rubyre: #{rubyretime}"
puts matches.inspect
#result = RubyProf.stop
#printer = RubyProf::FlatPrinter.new(result)
#printer.print(STDOUT, 0)


pp matches

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jls-grok-0.1.2787 test/speedtest.rb
jls-grok-0.1.2786 test/speedtest.rb