Mon
2
Oct '06
|
|
Thanks to a hint by Chris Mear on the Ruby on Rails Mailinglist I had an idea how to add profiling my unittests. It’s a simple 3 step process and adds just 5 lines of code to your unittests:
Step 1:
require 'profiler'
Step 2:
def setup
# ...
# your normal setup code
# ...
Profiler__::start_profile
end
Step 2:
def teardown
Profiler__::stop_profile
f=File::new("#{RAILS_ROOT}/log/profiler.#{name() + ' ' +
Time.now.strftime('%Y-%m-%d %H:%M')}.log", 'w')
Profiler__::print_profile(f)
# ...
# your normal teardown code
# ...
end
As you probably guessed from the code, this will log the profiling results into a file for each test. But beware: this is VERY SLOW! The tests I was profiling took 9s without profiling and 1267s with profiling… But slow profiling still beats no profiling
If you are looking for memory profiling, there is a nice article by Scott Laird on Memory leak profiling with Rails.