flat - ruby-prof

# Flat Profiles¶ ↑

Flat profiles show the total amount of time spent in each method. As an example, here is the output from running printers_test.rb.

Measure Mode: wall_time Thread ID: 70355159212340 Fiber ID: 70355171633140 Total: 0.060485 Sort by: self_time

    %self      total      self      wait     child     calls  name
    97.07      0.059     0.059     0.000     0.000     1001   Integer#upto
     0.92      0.059     0.001     0.000     0.059     1000   Object#is_prime
     0.66      0.060     0.000     0.000     0.059        1   Array#select
     0.59      0.000     0.000     0.000     0.000     1000   Kernel#rand
     0.50      0.001     0.000     0.000     0.000        1   Array#each_index
     0.20      0.000     0.000     0.000     0.000     1000   Kernel#respond_to_missing?
     0.01      0.000     0.000     0.000     0.000        1   Object#find_largest
     0.01      0.060     0.000     0.000     0.060        1   PrintersTest#setup
     0.01      0.060     0.000     0.000     0.060        1   Object#find_primes
     0.01      0.000     0.000     0.000     0.000        1   Class#new
     0.01      0.060     0.000     0.000     0.060        1   Object#run_primes
     0.00      0.000     0.000     0.000     0.000        1   Array#first
     0.00      0.001     0.000     0.000     0.001        1   Object#make_random_array
     0.00      0.000     0.000     0.000     0.000        1   Array#initialize

All values are in seconds.

The columns are:

    %self - The percentage of time spent in this method, derived from self_time/total_time
    total - The time spent in this method and its children.
    self  - The time spent in this method.
    wait  - amount of time this method waited for other threads
    child - The time spent in this method's children.
    calls - The number of times this method was called.
    name  - The name of the method.

Methods are sorted based on %self, therefore the methods that execute the longest are listed first.

For example, wee can see that Integer#upto took the most time, 0.059 seconds. Method Object#is_prime calls this method, so the 0.59 seconds appear as child time for Object#is_prime.

The interpretation of method names is:

- MyObject#test - An instance method “test” of the class “MyObject”

- <Object:MyObject>#test - The <> characters indicate a singleton method on a singleton class.