Ruby-pg Long Running Benchmarks


Benchmark Types
Show the last
Results
Compare

Number of iterations per second

Allocated objects

Pg/scope all Script View on Github

require 'bundler/setup'
require 'pg'
require_relative 'support/benchmark_pg'

db_setup script: "bm_scope_all_setup.rb"

connection = PG.connect(ENV.fetch("DATABASE_URL"))
type_mapper = PG::BasicTypeMapForResults.new(connection)

Benchmark.pg("pg/scope_all", time: 5) do
  str = ""

  result = connection.exec("SELECT name, email, approved, age, birthday FROM users")
  result.type_map = type_mapper

  i = 0
  while i < result.ntuples do
    str << "name: #{result.getvalue(i, 0)} email: #{result.getvalue(i, 1)} approved: #{result.getvalue(i, 2)} age: #{result.getvalue(i, 3)} birthday: #{result.getvalue(i, 4)} \n"
    i += 1
  end
end

Activerecord/postgres scope all Script View on Github

require 'bundler/setup'
require 'active_record'
require_relative 'support/benchmark_rails'

db_setup script: "bm_scope_all_setup.rb"

ActiveRecord::Base.establish_connection(ENV.fetch('DATABASE_URL'))

ActiveRecord::Migration.verbose = false

class User < ActiveRecord::Base; end

Benchmark.rails("activerecord/#{db_adapter}_scope_all", time: 5) do
  str = ""
  User.select(:name, :email, :approved, :age, :birthday).each do |user|
    str << "name: #{user.name} email: #{user.email} approved: #{user.approved} age: #{user.age} birthday: #{user.birthday}\n"
  end
end