Skip to content
GProf - The profiling module for Groovy
Java Groovy
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib update build.xml, update the version to 0.3.1 Jun 27, 2015
src fix compilation error with groovy 2.4 Jun 27, 2015
.gitignore update .gitignore Sep 7, 2013
LICENSE undo invalid replacement Jul 22, 2013
NEWS update NEWS Sep 14, 2013
README update README Sep 14, 2013
build.xml update build.xml, update the version to 0.3.1 Jun 27, 2015
pom.xml change the top package to groovyx Jul 22, 2013

README

OVERVIEW
--------

The Groovy profiler, GProf is a profiling module for Groovy. It allows you
to determine which parts of a program are taking most of the execution time
as the GNU profiler, gprof does for C and C++.

INSTALL
-------

  @Grab('org.gperfutils:gprof:0.3.0-groovy-2.1') // v0.3.0 for Groovy 2.1

or other ways to install from the Maven Central repository or build a jar
file from source code.

EXAMPLE
-------

  // slow !!
  def fib(n) {
      if (n < 2) {
          n
      } else {
          fib(n - 1) + fib(n - 2)
      }
  }

  profile {
      fib(20)
  }.prettyPrint()

  /* stdout
  Flat:

   %    cumulative   self            self     total    self    total   self    total
  time   seconds    seconds  calls  ms/call  ms/call  min ms  min ms  max ms  max ms  name
  54.3        0.29     0.29      2   145.86   267.78   38.14   58.56  253.57  477.00  demo.fib
  30.4        0.45     0.16  21890     0.00     0.00    0.00    0.00    0.80    0.80  java.lang.Integer.minus
  15.0        0.53     0.08  10945     0.00     0.00    0.00    0.00    0.83    0.83  java.lang.Integer.plus
   0.1        0.53     0.00      1     1.05   537.10    1.05  537.10    1.05  537.10  demo$_run_closure1.fib
   0.0        0.53     0.00      1     0.13   537.23    0.13  537.23    0.13  537.23  demo$_run_closure1.doCall

  Call graph:

  index  % time  self  children  calls        name
                 0.00      0.53          1/1      <spontaneous>
  [1]     100.0  0.00      0.53            1  demo$_run_closure1.doCall [1]
                 0.00      0.53          1/1      demo$_run_closure1.fib [2]
  -----------------------------------------------------------------------------
                 0.00      0.53          1/1      demo$_run_closure1.doCall [1]
  [2]      99.9  0.00      0.53            1  demo$_run_closure1.fib [2]
                 0.29      0.24          2/2      demo.fib [3]
                 0.00      0.00      2/21890      java.lang.Integer.minus [4]
                 0.00      0.00      1/10945      java.lang.Integer.plus [5]
  -----------------------------------------------------------------------------
                 0.29      0.24          2/2      demo$_run_closure1.fib [2]
  [3]      99.6  0.29      0.24      2+21888  demo.fib [3]
                 0.16      0.00  21888/21890      java.lang.Integer.minus [4]
                 0.08      0.00  10944/10945      java.lang.Integer.plus [5]
  -----------------------------------------------------------------------------
                 0.00      0.00      2/21890      demo$_run_closure1.fib [2]
                 0.16      0.00  21888/21890      demo.fib [3]
  [4]      30.4  0.16      0.00        21890  java.lang.Integer.minus [4]
  -----------------------------------------------------------------------------
                 0.00      0.00      1/10945      demo$_run_closure1.fib [2]
                 0.08      0.00  10944/10945      demo.fib [3]
  [5]      15.0  0.08      0.00        10945  java.lang.Integer.plus [5]
  -----------------------------------------------------------------------------
  */

LICENSE
-------

GProf is licensed under the term of the Apache License, Version 2.0. See
the file LICENSE for the full license.

You can’t perform that action at this time.