gestalt
Simple Ruby profiling
Getting started
Profiling with gestalt is easy to get started with and understand. Say for instance that you have this class:
class Slow
def method
3.times { sleep(0.1) }
'slow'
end
end
You have a feeling that it could do better with single, so check to see what happens when you call it:
Gestalt.trace do
slow = Slow.new
slow.method
end
This will give you output in the following format:
percentage times method file
percentage times method file
percentage is the percent of the parent that these calls account for times is how many times the thing was called method tells you what was called and file tells you where it was called from
Indents means nesting, durations for outer calls include inner calls and the times for inner calls happened for each of the outer calls.
You can also get a summary after the fact:
Gestalt.profile do
slow = Slow.new
slow.method
end
This will give you output in the following format:
+---+--------+----------+
| # | action | duration |
+---+--------+----------+
The # column indicates how many times each occurred, action is the thing that occurred and duration is the total time taken for all occurrences.
Copyright
(The MIT License)
Copyright © 2010 geemus (Wesley Beary)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.