测量Ant编译时间
Java世界下,Ant几乎和C++的make一样属于超级常用的工具,可能也和Ant的Java实现有关,通常我总是感觉Ant有些慢腾腾的,有时实在嫌Ant编译太慢,口说无凭,自然想要测一下时间。原始的方法是改动Ant脚本,在里面加入计时的部分,不过显然属于吃力且不讨好的工作,还好,Ant提供了很强大的扩展功能,可以在Ant提供的回调基础上做这些统计工作,于是我找到了两个方便的开源工具:Ant Utility和Ant Contrib,他们均可以作为Ant的扩展来提供时间统计功能。
到这里下载Ant Utility的Jar文件,放在Ant的Lib目录下,然后在执行ant时加入一个参数 -listener net.java.antutility.BuildMetricsListener即可,ant执行结束时就会打印出耗时信息了,下面是一个例子:
BUILD METRICS:
Local Time, Child Time, Invocation Count, Type, Name, Location
10703, 0, 1, TASK, copy, E:\lab\liferay-ext-5.2.2\build-common.xml:191:
2796, 0, 15, TASK, taskdef, E:\lab\liferay-ext-5.2.2\build-common.xml:48:
1172, 0, 15, TASK, taskdef, E:\lab\liferay-ext-5.2.2\build-common.xml:51:
172, 0, 15, TASK, whichresource, E:\lab\liferay-ext-5.2.2\build-common.xml:93:
156, 26125, 1, BUILD, build, n/a:
这是在执行Ant结束时打出的时间统计,每行均为Ant的一个动作,在Ant术语里就是Build、Target或Task,整个输出按照时间顺序倒序输出,这样便于一眼发现编译的瓶颈所在,基本上每行的信息已经很直观了,Child Time是指这个动作的子动作的耗时;Invocation Count是执行次数;后面的Type,name,Location可以很方便知道这个是在做什么动作。
用法几乎和Ant Utility一样,但最终的结果,我看来,没有Ant Utility显示的好用,所以,我还是推荐用上面的Ant Utility。