Skip to content

Instantly share code, notes, and snippets.

@rbirnie
Created November 5, 2012 18:06
Show Gist options
  • Save rbirnie/4019346 to your computer and use it in GitHub Desktop.
Save rbirnie/4019346 to your computer and use it in GitHub Desktop.
Fact Loop
irb(main):049:0> a = 0
=> 0
irb(main):050:0> FactValue.where(:fact_name_id => fact_name_id).includes(:fact_name).map do |fact|
irb(main):051:1* a += 1
irb(main):052:1> puts fact.value
irb(main):053:1> end
irb(main):054:0> a
=> 6391
irb(main):061:0> FactValue.group(:fact_name_id, :value).where(:fact_name_id => fact_name_id).includes(:fact_name).map do |fact|
irb(main):062:1* a += 1
irb(main):063:1> puts fact.value
irb(main):064:1> end
irb(main):065:0> a
=> 5
irb(main):068:0> timing = Benchmark.measure { FactValue.group(:fact_name_id, :value).where(:fact_name_id => fact_name_id).includes(:fact_name).map }
=> #<Benchmark::Tms:0x7f13ab1f53e0 @cutime=0.0, @label="", @stime=0.0, @real=0.0573320388793945, @utime=0.00999999999999091, @total=0.00999999999999091, @cstime=0.0>
irb(main):069:0> timing = Benchmark.measure { FactValue.where(:fact_name_id => fact_name_id).includes(:fact_name).map }
=> #<Benchmark::Tms:0x7f13ac8d1960 @cutime=0.0, @label="", @stime=0.2, @real=4.85486507415771, @utime=4.63, @total=4.83, @cstime=0.0>
irb(main):077:0> timing = Benchmark.measure { FactValue.group(:fact_name_id, :value).where(:fact_name_id => fact_name_id).includes(:fact_name).map do |fact|
irb(main):078:2* FactTrend.create(:trendable_type => "FactName",
irb(main):079:3* :trendable_id => fact.fact_name.id,
irb(main):080:3* :fact_name => fact.fact_name.name,
irb(main):081:3* :fact_value => fact.value,
irb(main):082:3* :name => fact.value)
irb(main):083:2> end }
=> #<Benchmark::Tms:0x7f13ac6f4070 @cutime=0.0, @label="", @stime=0.0, @real=0.167869091033936, @utime=0.019999999999996, @total=0.019999999999996, @cstime=0.0>
irb(main):121:0> timing = Benchmark.measure { FactValue.where(:fact_name_id => fact_name_id).includes(:fact_name).map do |fact|
irb(main):122:2* FactTrend.create(:trendable_type => "FactName",
irb(main):123:3* :trendable_id => fact.fact_name.id,
irb(main):124:3* :fact_name => fact.fact_name.name,
irb(main):125:3* :fact_value => fact.value,
irb(main):126:3* :name => fact.value)
irb(main):127:2> end }
=> #<Benchmark::Tms:0x7f13aca22580 @cutime=0.0, @label="", @stime=3.71, @real=96.7772920131683, @utime=88.91, @total=92.62, @cstime=0.0>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment