Hi, I’ve started a Rails 3 project using Ruby 1.9.2 and Rspec 2 and my
test suite is now growing and I’m not happy with the amount of time it
is tooking to run. I did a benchmark of it with Ruby Enterprise
Edition 1.8.7 2011.03 and it ran much more faster(5x) than Ruby 1.9.2.
Is it expected or there is something I’m missing? To see the results,
Gemfile and spec_helper.rb please check the gist
rspec runs its own specs faster on 1.9.2 than on 1.8.7: 1.8.7.sh · GitHub
Cool.
Which version of rails are you using, and what other gems are in your Gemfile?
Rails 3.0.5, the complete Gemfile is on the gist
I think the other gems that may be affecting the speed are
factory_girl_rails and shoulda-matchers but in the ruby 1.8.7 the
result is so good that I’m wondering if the problem is a specific gem.
Are you perhaps seeing http://is.gd/6aINHC ? We’ve moved several Rails
projects to 1.9.2 over the last few months and we’ve found our builds
running slower on all (we use RSpec too).
Are you perhaps seeing http://is.gd/6aINHC ? We’ve moved several Rails
projects to 1.9.2 over the last few months and we’ve found our builds
running slower on all (we use RSpec too).
I’m not sure if the problem is the startup time. Does the startup time
affects results of rspec --profile?
See the results of $ rspec spec/models/user_spec.rb -p here
Unfortunately I don’t have a Rails project handy that builds on both
1.8 and 1.9, but here are the results for a pure Ruby project:
As you can see, the build times are nearly identical across 1.8.7,
REE, 1.9.2 and 1.9.3-dev (I’m using RSpec 2.6.0.rc2).
Are you seeing the build slow down in direct correlation to the number
of tests you’re running? What I’ve seen is that the delay is constant
and a function of the number of files being required and not the
number of tests, so the more tests you have, the closer the build
times should be on 1.8.7 and 1.9.2.
Of course, this can make running a single spec on 1.9.2 irritatingly
slow - one of the projects at my workplace that has a largish codebase
had to start using spork after upgrading to 1.9.2 because what used to
be an acceptable delay to run a single spec on 1.8.7 became excessive
on 1.9.2.
Are you perhaps seeing http://is.gd/6aINHC ? We’ve moved several Rails
projects to 1.9.2 over the last few months and we’ve found our builds
running slower on all (we use RSpec too).
I’m not sure if the problem is the startup time. Does the startup time
affects results of rspec --profile?
Yes, I agree with you. It probably is some issue related to some gem
that behaves differently in Ruby 1.8 and 1.9…
That is why I miss a real good profiler tool, like that of Google Chrome
for profiling Javascript. We discussed about this recently and David
suggested trying out ruby-prof or Rubinius:
You could try the Graphic profile of ruby-prof and it might help you
identifying which part is slower on each implementation so that you
could identify what is the culprit gem, if that is the case.
For speeding up your startup time you can try spork. It helped a lot for
me.
Thank you guys, I’ll open a issue on the meta_where project.
I’d very much appreciate any pointers as to what I might be “doing
wrong” that only affects RSpec under 1.9.2. I’m at a loss, offhand,
especially since regular application performance doesn’t seem to be
adversely affected.
Squeel is also affected, apparently, and it uses RSpec for testing
internally, running 672 examples in under 4 seconds. Maybe it’s
something that only occurs when being tested inside a Rails app
directly?
If anyone has any information, or a sample app/tests that clearly
demonstrate the issue, it’d be much appreciated.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.