Make predicate builder about 2x faster
Extra predicate handler for just one line preprocess is too expensive. ```ruby ActiveRecord::Schema.define do create_table :users, force: true do |t| end end class User < ActiveRecord::Base end predicate_builder = User.predicate_builder attr = User.arel_attribute(:id) user = User.create! user_id = user.id Benchmark.ips do |x| x.report("build:user") { predicate_builder.build(attr, user) } x.report("build:user_id") { predicate_builder.build(attr, user_id) } end ``` Before: ``` Warming up -------------------------------------- build:user 11.626k i/100ms build:user_id 23.314k i/100ms Calculating ------------------------------------- build:user 114.151k (± 2.0%) i/s - 581.300k in 5.094468s build:user_id 226.420k (± 2.3%) i/s - 1.142M in 5.048205s ``` After: ``` Warming up -------------------------------------- build:user 21.484k i/100ms build:user_id 24.307k i/100ms Calculating ------------------------------------- build:user 210.207k (± 1.8%) i/s - 1.053M in 5.009623s build:user_id 238.276k (± 2.1%) i/s - 1.215M in 5.102951s ```
Showing
想要评论请 注册 或 登录