README

September 14, 2013 · View on GitHub

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 demorunclosure1.fib0.00.530.0010.13537.230.13537.230.13537.23demo_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 [1] 100.0 0.00 0.53 1 demorunclosure1.doCall[1]0.000.531/1demo_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.