いいねJavaEEの参加ブログ書こうと思って、Jerseyのドキュメント読んで、へぇーと納得して、次は slf4j extensionsを読んでる イマココ
— バファラティ (@bufferings) April 27, 2013
中でどれくらいかかってるか知りたいなーと思ったり。でググったり。
そしたらあるじゃん本家に。
てことでSLF4J。
Profiler
こう書いたら
55 public static void main(String[] args) { 56 // create a profiler called "BASIC" 57 Profiler profiler = new Profiler("BASIC"); 58 profiler.start("A"); 59 doA(); 60 61 profiler.start("B"); 62 doB(); 63 64 profiler.start("OTHER"); 65 doOther(); 66 profiler.stop().print(); 67 }
こう出るらしい
+ Profiler [BASIC] |-- elapsed time [A] 220.487 milliseconds. |-- elapsed time [B] 2499.866 milliseconds. |-- elapsed time [OTHER] 3300.745 milliseconds. |-- Total [BASIC] 6022.568 milliseconds.
ネストもできるぽい。
個人的には、あんまりネストを意識したくないので、勝手にネストしてくれるのがあってもよいなーと思った。
Logger 使う
上記の print() はコンソールに出力するので
66 profiler.stop().print();
ロガーを使う場合はセットして
23 // associate a logger with the profiler 24 profiler.setLogger(logger);
print() の代わりに log() を呼び出せば良いみたい。
39 // stop and log 40 profiler.stop().log();
log() メソッドは DEBUG レベルで "PROFILER" マーカーつきで出力されるそうな。
なのでレベルだけじゃなくてマーカーで出し分けできるから便利ね。
Read Source
時間はどうやってとってるのかなーと。ふと思って見てみたら System.nanoTime() だった。そっか。
StopWatch.java
public void start(String name) { this.name = name; startTime = System.nanoTime(); status = TimeInstrumentStatus.STARTED; }
クラスも8こだけだし。コード綺麗だし。さらっと読めて。楽しかったー。
# そういえば昔TPTPを使った記憶がかすかに残ってるけど今そのへんどうなってるのかなー。