Module: TestProf::RubyProf
- Extended by:
- Logging
- Defined in:
- lib/test_prof/ruby_prof.rb,
lib/test_prof/ruby_prof/rspec.rb,
lib/test_prof/ruby_prof/rspec_exclusions.rb
Overview
RubyProf wrapper.
Has 2 modes: global and per-example.
Example:
# To activate global profiling you can use env variable
TEST_RUBY_PROF=1 rspec ...
# or in your code
TestProf::RubyProf.run
To profile a specific examples add :rprof tag to it:
it "is doing heavy stuff", :rprof do
...
end
Defined Under Namespace
Modules: RSpecExclusions Classes: Configuration, Listener, Report
Constant Summary
Constants included from Logging
Class Method Summary collapse
- .config ⇒ Object
- .configure {|config| ... } ⇒ Object
- .profile ⇒ Object
-
.run ⇒ Object
Run RubyProf and automatically dump a report when the process exits.
Methods included from Logging
Class Method Details
.config ⇒ Object
142 143 144 |
# File 'lib/test_prof/ruby_prof.rb', line 142 def config @config ||= Configuration.new end |
.configure {|config| ... } ⇒ Object
146 147 148 |
# File 'lib/test_prof/ruby_prof.rb', line 146 def configure yield config end |
.profile ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/test_prof/ruby_prof.rb', line 166 def profile return if locked? return unless init_ruby_prof = { merge_fibers: true } [:include_threads] = [Thread.current] unless config.include_threads? profiler = ::RubyProf::Profile.new() profiler.exclude_common_methods! if config.exclude_common_methods? if config.test_prof_exclusions_enabled? # custom test-prof exclusions exclude_rspec_methods(profiler) # custom global exclusions exclude_common_methods(profiler) end config.custom_exclusions.each do |klass, mids| profiler.exclude_methods! klass, *mids end profiler.start Report.new(profiler) end |
.run ⇒ Object
Run RubyProf and automatically dump a report when the process exits.
Use this method to profile the whole run.
154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/test_prof/ruby_prof.rb', line 154 def run report = profile return unless report @locked = true log :info, "RubyProf enabled" at_exit { report.dump("total") } end |