Skip to content

Commit 931eb7e

Browse files
authored
Merge pull request #1116 from jruby/bench2
[chore] adjust update benchmark code
2 parents 180bdfe + 5489da0 commit 931eb7e

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

Gemfile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,13 @@ elsif ENV['AR_VERSION'] # Use specific version of AR and not .gemspec version
4545
end
4646
end
4747
else
48-
gemspec name: 'activerecord-jdbc-adapter' # Use versiom from .gemspec
48+
if defined? JRUBY_VERSION
49+
gemspec name: 'activerecord-jdbc-adapter' # Use versiom from .gemspec
50+
else # read add_dependency 'activerecord', '~> 7.0' and use the same requirement on MRI
51+
ar_req = File.read('activerecord-jdbc-adapter.gemspec').match(/add_dependency.*?activerecord.*['"](.*?)['"]/)[1]
52+
raise "add_dependency 'activerecord', ... line not detected in gemspec" unless ar_req
53+
gem 'activerecord', ar_req
54+
end
4955
end
5056

5157
gem 'rake', require: nil
@@ -82,7 +88,7 @@ group :rails do
8288
end
8389

8490
group :development do
85-
gem 'ruby-debug', require: nil # if ENV['DEBUG']
91+
#gem 'ruby-debug', require: nil # if ENV['DEBUG']
8692
group :doc do
8793
gem 'yard', require: nil
8894
gem 'kramdown', require: nil
@@ -97,7 +103,7 @@ group :test do
97103

98104
gem 'mysql2', '>= 0.4.4', require: nil, platform: :mri
99105
gem 'pg', '>= 0.18.0', require: nil, platform: :mri
100-
gem 'sqlite3', '~> 1.3.6', require: nil, platform: :mri
106+
gem 'sqlite3', '~> 1.4', require: nil, platform: :mri
101107

102108
# group :mssql do
103109
# gem 'tiny_tds', require: nil, platform: :mri

bench/benchmark_create.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@
3636
label = value
3737
label = "#{value[0,16]}...(#{value.size})" if value.is_a?(String) && value.size > 16
3838
x.report("BenchRecord.create('#{field}' => #{label.inspect})") do
39-
BenchRecord.create(field => value)
39+
BenchRecord.create!(field => value)
4040
end
4141
end
4242

4343
x.report("BenchRecord.create(...)") do
44-
BenchRecord.create(fields.dup)
44+
BenchRecord.create!(fields.dup)
4545
end
4646

4747
end

bench/benchmark_update.rb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,29 @@
2727

2828
empty = {}
2929

30+
record_1 = BenchRecord.create.reload
31+
record_2 = BenchRecord.create.reload
32+
record_3 = BenchRecord.create.reload
33+
def record_3.changed_attribute_names_to_save; attribute_names end # will always update all attributes
34+
3035
Benchmark.ips do |x|
3136
x.config(:suite => BenchTestHelper::Suite::INSTANCE)
3237

33-
record = BenchRecord.create.reload
34-
x.report("BenchRecord#update()") do
35-
record.update empty
38+
x.report("BenchRecord#update() [NOOP]") do
39+
record_1.update! empty # base-line expected to be a no-op
3640
end
3741

3842
fields.each do |field, value|
3943
label = value
4044
label = "#{value[0,16]}...(#{value.size})" if value.is_a?(String) && value.size > 16
41-
record = BenchRecord.create.reload
4245
x.report("BenchRecord#update('#{field}' => #{label.inspect})") do
43-
record.update(field => value)
46+
record_2.send "#{field}_will_change!" # forces the change even if the value did not change
47+
record_2.update!(field => value)
4448
end
4549
end
4650

4751
x.report("BenchRecord#update(...)") do
48-
record.update(fields)
52+
record_3.update!(fields)
4953
end
5054

5155
end

0 commit comments

Comments
 (0)