File: profiler.rb

# profiler.rb

Path: | profiler.rb
Last Update: | Sat Oct 15 23:44:28 AUS Eastern Standard Time 2005

### Methods

print_profile start_profile stop_profile

### Public Instance methods

print_profile(f)

[Source]

    # File profiler.rb, line 32
      def print_profile(f)
        stop_profile
        total = Process.times[0] - @@start
        if total == 0 then total = 0.01 end
        data = @@map.values
        data.sort!{|a,b| b[2] <=> a[2]}
        sum = 0
        f.printf "  %%   cumulative   self              self     total\n"
        f.printf " time   seconds   seconds    calls  ms/call  ms/call  name\n"
        for d in data
          sum += d[2]
          f.printf "%6.2f %8.2f  %8.2f %8d ", d[2]/total*100, sum, d[2], d[0]
          f.printf "%8.2f %8.2f  %s\n", d[2]*1000/d[0], d[1]*1000/d[0], get_name(*d[3])
        end
        f.printf "%6.2f %8.2f  %8.2f %8d ", 0.0, total, 0.0, 1     # ???
        f.printf "%8.2f %8.2f  %s\n", 0.0, total*1000, "#toplevel" # ???
      end

start_profile()

[Source]

    # File profiler.rb, line 23
      def start_profile
        @@start = Process.times[0]
        @@stack = []
        @@map = {}
        set_trace_func PROFILE_PROC
      end

stop_profile()

[Source]

    # File profiler.rb, line 29
      def stop_profile
        set_trace_func nil
      end

[Validate]