Sha256: 506834e3ba6e8703ad98d923eb2bd0f018c7fe2a5d77866b68e469a2048166df

Contents?: true

Size: 1.12 KB

Versions: 32

Compression:

Stored size: 1.12 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))

require 'json'
require 'benchmark'
include Benchmark # rubocop:disable Style/MixinUsage

require 'elastic_apm/sql_summarizer'
require 'elastic_apm/sql/signature'

examples =
  JSON
  .parse(File.read('../apm/tests/random_sql_query_set.json'))
  .map { |ex| ex['input'] }

puts "#{'=' * 14} Parsing #{examples.length} examples #{'=' * 14}"

summarizer = ElasticAPM::SqlSummarizer.new

result_old = nil
result_new = nil

benchmark(CAPTION, 7, FORMAT, 'avg/ex:') do |bm|
  old = bm.report('old:') do
    result_old = examples.map { |i| summarizer.summarize(i) }
  end
  new = bm.report('new:') do
    result_new = examples.map { |i| ElasticAPM::Sql::Signature.parse(i) }
  end

  [(new - old) / examples.length]
end

pp(result_old.count { |res| res == 'SQL' })
pp(result_new.count { |res| res =~ /(--|\/\*\*)/ })

## Stackprof

require 'stackprof'

puts 'Running stackprof'
profile = StackProf.run(mode: :wall, interval: 1) do
  examples.each { |i| ElasticAPM::Sql::Signature.parse(i) }
end
puts ''

StackProf::Report.new(profile).print_text

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
elastic-apm-4.7.3 bench/sql.rb
elastic-apm-4.7.2 bench/sql.rb
elastic-apm-4.7.1 bench/sql.rb
elastic-apm-4.7.0 bench/sql.rb
elastic-apm-4.6.2 bench/sql.rb
elastic-apm-4.6.1 bench/sql.rb
elastic-apm-4.6.0 bench/sql.rb
elastic-apm-4.5.1 bench/sql.rb
elastic-apm-4.5.0 bench/sql.rb
elastic-apm-4.4.0 bench/sql.rb
elastic-apm-4.3.0 bench/sql.rb
elastic-apm-4.2.0 bench/sql.rb
elastic-apm-4.1.0 bench/sql.rb
elastic-apm-4.0.0 bench/sql.rb
elastic-apm-4.0.0.beta.2 bench/sql.rb
elastic-apm-3.15.1 bench/sql.rb
elastic-apm-4.0.0.beta.1 bench/sql.rb
elastic-apm-3.15.0 bench/sql.rb
elastic-apm-3.14.0 bench/sql.rb
elastic-apm-3.13.0 bench/sql.rb