Gary Doades wrote:

> Aha.... It looks like ActiveRecord has an enormous overhead in
> creating/saving records.
> 
> If you change the inserts to this....
> 
> puts Benchmark.measure {
> Phrase.transaction do
>    all_phrases.each do |phrase|
>      Phrase.connection.execute("insert into phrases(s,frequency,length)
> values('#{phrase}',#{frequencies[phrase]},#{lengths[phrase]})")
>    end
> end
> }
> 
> you get this:
> 
> "Starting inserting records"
>    1.123000   0.686000   1.809000 (  5.096000)
> 30000
> 
> Which is exactly what you want I think :)


i was googling for "ActiveRecord transaction" and got this page

http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

where it says:

  Save and destroy are automatically wrapped in a transaction

so i think create is also invoking a save... do you think so?  if it is 
then it is making it a transaction.  that's why it is so slow... it 
cannot be lots of record creations in a single transaction, or maybe 
there is a method and we don't know yet  (maybe a method is using 
ar:extensions, or why not have a standard activerecord mechanism to do 
hugh updates/inserts, i wonder)

-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to