About Me

My photo
Author of Groovy modules: GBench, GProf, Co-author of a Java book パーフェクトJava, Game Developer at GREE

Wednesday, April 3, 2013

GProf was just born!

GProf a.k.a. Groovy gprof was just born Yesterday [https://code.google.com/p/gprof/]. GProf is a profiler for Groovy [http://groovy.codehaus.org/]. It allows you to determine which parts of a program are taking most of the execution time like GNU gprof does for C, C++.

For example, in the following code, GProf shows you that YourApp has two slow operation; one is a task that is short but repeated many times and another is a long task.

class YourApp {
    void start() {
        def foo = new Foo()
        for (int i = 0; i < 100; i++) {
            foo.doShortTask()
        }
        def bar = new Bar()
        bar.doLongTask()
    }
}

class Bar {
    void doLongTask() {
        for (int i = 0; i < 1000000; i++);
    }
}

class Foo {
    void doShortTask() {
        for (int i = 0; i < 10000; i++);
    }
}

profile {  // or new gprof.Profiler().run {
    new YourApp().start()
}.prettyPrint()

/* stdout
%      calls  total ms  ms/call  min ms  max ms  method       class
47.59      1     54.33    54.33   54.33   54.33  doLongTask   Bar
40.05    100     45.72     0.46    0.29    2.09  doShortTask  Foo
11.92      1     13.61    13.61   13.61   13.61  start        YourApp
 0.18      1      0.21     0.21    0.21    0.21  ctor         YourApp
 0.13      1      0.14     0.14    0.14    0.14  ctor         Bar
 0.13      1      0.14     0.14    0.14    0.14  ctor         Foo
*/
Please try GProf and send me your feecback. Enjoy!

No comments:

Post a Comment