Guest User

Untitled

a guest
Mar 9th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. require 'rubygems'
  2. require 'active_record'
  3. require 'benchmark'
  4.  
  5. # tweak to do immediate type translation
  6. class ActiveRecord::ConnectionAdapters::SQLite3Adapter
  7. # class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
  8. attr_reader :connection
  9. end
  10. ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => 'perf_ar.db'
  11. # ActiveRecord::Base.establish_connection(:adapter => 'postgresql',
  12. # :host => 'localhost', :port => 5432, :encoding => 'UTF8',
  13. # :username => 'rails_user', :password => 'rails', :database => 'new_blog_dev')
  14. ActiveRecord::Base.connection.connection.type_translation = true
  15.  
  16.  
  17. # set up ActiveRecord
  18. class ArItem < ActiveRecord::Base
  19. set_table_name 'items'
  20. end
  21.  
  22. # created schema and data
  23. class NewItem < ActiveRecord::Migration
  24. def self.up
  25. create_table :items do |t|
  26. t.column :name, :string
  27. t.column :description, :text
  28. t.column :active, :boolean
  29. t.column :created_at, :datetime
  30. end
  31. end
  32. def self.down
  33. drop_table :items
  34. end
  35. end
  36. NewItem.up
  37.  
  38. 1000.times do |i|
  39. ArItem.create(:name => "record_#{i}", :description => "test record", :active => i.remainder(3).zero?)
  40. end
  41.  
  42. # run benchmarks
  43. Benchmark.bmbm do |x|
  44.  
  45. x.report('active_record single-thread') do
  46. 100.times do
  47. ArItem.find(:all, :conditions => ["active = ?", false])
  48. end
  49. end
  50.  
  51. x.report('active_record threaded') do
  52. ActiveRecord::Base.allow_concurrency = true
  53. threads = []
  54. 10.times do
  55. t = Thread.new do
  56. 10.times do
  57. ArItem.find(:all, :conditions => ["active = ?", false])
  58. end
  59. end
  60. threads.push(t)
  61. end
  62. threads.each { |t| t.join }
  63. end
  64.  
  65. end
  66.  
  67. NewItem.down
Add Comment
Please, Sign In to add comment