I recently gave a presentation at the Indianapolis Ruby Brigade monthly meeting, covering aspects of DM I like, and recommending the crowd give it a shot in their next project. I was asked about performance, as I knew I would be, but I hadn't really taken a good run at a performance comparison at the time (which seems like a huge failure on my part, considering I've put a Rails 3 DM app in to production). Thus, I sat down yesterday intending to get some numbers I could show people. Unfortunately, the results were surprisingly negative for DataMapper. I am hoping that I'm unwittingly performing a poor benchmark.
You can get the code I used here: https://github.com/mileszs/dm-v-ar-performance In both apps there is a very basic User model. They are using the same database (on MySQL). The db/seeds.rb file in the DataMapper app creates 10000 user records. I used the recommended app template to generate the DataMapper app: rails new dm-perf-app -m http://datamapper.org/templates/rails.rb bundle install rails g scaffold User email:string rake db:setup rake db:seed The ActiveRecord app is similar, but uses the same database: rails new ar-perf-app bundle install rails g scaffold User email:string To test performance, I used variations of: # DataMapper env RAILS_ENV=production rails benchmarker "10000.times { |i| u = User.all(:id => i).first; u.email if u }" # ActiveRecord env RAILS_ENV=production rails benchmarker "10000.times { |i| u = User.where(:id => i).first; u.email if u }" ... which I stole from Luke Ludwig's "Rails 3 Performance - Not Good Enough article. Results: DataMapper: user system total real #1 10.530000 0.630000 11.160000 ( 12.580429) ActiveRecord: user system total real #1 3.150000 0.300000 3.450000 ( 4.171568) (I have run the test several times with similar results.) Are there obvious errors in my method? Perhaps some basic things I could do to improve performance? I really like DataMapper, so it will be disappointing to report back such a discrepancy in performance. Thank you for any help you can provide! MilesZS -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to datamapper@googlegroups.com. To unsubscribe from this group, send email to datamapper+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.