Skip to content

Commit

Permalink
Merge pull request #1116 from jruby/bench2
Browse files Browse the repository at this point in the history
[chore] adjust update benchmark code
  • Loading branch information
kares authored Jan 31, 2024
2 parents 180bdfe + 5489da0 commit 931eb7e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 11 deletions.
12 changes: 9 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,13 @@ elsif ENV['AR_VERSION'] # Use specific version of AR and not .gemspec version
end
end
else
gemspec name: 'activerecord-jdbc-adapter' # Use versiom from .gemspec
if defined? JRUBY_VERSION
gemspec name: 'activerecord-jdbc-adapter' # Use versiom from .gemspec
else # read add_dependency 'activerecord', '~> 7.0' and use the same requirement on MRI
ar_req = File.read('activerecord-jdbc-adapter.gemspec').match(/add_dependency.*?activerecord.*['"](.*?)['"]/)[1]
raise "add_dependency 'activerecord', ... line not detected in gemspec" unless ar_req
gem 'activerecord', ar_req
end
end

gem 'rake', require: nil
Expand Down Expand Up @@ -82,7 +88,7 @@ group :rails do
end

group :development do
gem 'ruby-debug', require: nil # if ENV['DEBUG']
#gem 'ruby-debug', require: nil # if ENV['DEBUG']
group :doc do
gem 'yard', require: nil
gem 'kramdown', require: nil
Expand All @@ -97,7 +103,7 @@ group :test do

gem 'mysql2', '>= 0.4.4', require: nil, platform: :mri
gem 'pg', '>= 0.18.0', require: nil, platform: :mri
gem 'sqlite3', '~> 1.3.6', require: nil, platform: :mri
gem 'sqlite3', '~> 1.4', require: nil, platform: :mri

# group :mssql do
# gem 'tiny_tds', require: nil, platform: :mri
Expand Down
4 changes: 2 additions & 2 deletions bench/benchmark_create.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@
label = value
label = "#{value[0,16]}...(#{value.size})" if value.is_a?(String) && value.size > 16
x.report("BenchRecord.create('#{field}' => #{label.inspect})") do
BenchRecord.create(field => value)
BenchRecord.create!(field => value)
end
end

x.report("BenchRecord.create(...)") do
BenchRecord.create(fields.dup)
BenchRecord.create!(fields.dup)
end

end
Expand Down
16 changes: 10 additions & 6 deletions bench/benchmark_update.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,29 @@

empty = {}

record_1 = BenchRecord.create.reload
record_2 = BenchRecord.create.reload
record_3 = BenchRecord.create.reload
def record_3.changed_attribute_names_to_save; attribute_names end # will always update all attributes

Benchmark.ips do |x|
x.config(:suite => BenchTestHelper::Suite::INSTANCE)

record = BenchRecord.create.reload
x.report("BenchRecord#update()") do
record.update empty
x.report("BenchRecord#update() [NOOP]") do
record_1.update! empty # base-line expected to be a no-op
end

fields.each do |field, value|
label = value
label = "#{value[0,16]}...(#{value.size})" if value.is_a?(String) && value.size > 16
record = BenchRecord.create.reload
x.report("BenchRecord#update('#{field}' => #{label.inspect})") do
record.update(field => value)
record_2.send "#{field}_will_change!" # forces the change even if the value did not change
record_2.update!(field => value)
end
end

x.report("BenchRecord#update(...)") do
record.update(fields)
record_3.update!(fields)
end

end
Expand Down

0 comments on commit 931eb7e

Please sign in to comment.