| 今天继续Groovy,下午使用Groovy遇到了一个,写了一个大约有90行的Groovy脚本,在一个jsp里做了一下测试,执行时间竟然要到1~2秒,经过测试发现95%的时间花在了编译上面,而我们的脚本可以随时需要修改,这可不能满足需要,看了一会儿Groovy的文件,发现它把每一个脚本均是编译成一个class之后构造一个GroovyObject调用其中的run方法,这么一来,可以缓存编译后的class来避免每次编译,时间不等人啊。
现在的策略是:
1.先看缓存中有没有与脚本对应的class,有则检查脚本的修改时间是否大于缓存中所记录的时间戳,如果大于,则重新编译,之后再缓存;如前述的条件均不满足,从缓存中取class
2.检查过缓存之后,根据得到的class构造出一个GroovyObject
3.调用groovyObject.setProperty将需要的参数绑定
4.调用run方法,取得返回结果
再运行测试的jsp,5毫秒,快了很多,能够满足系统现在的要求了。
而Groovy网站上讲的例子是很简单,但在生产环境下根本不能那么用,建议有用Groovy嵌入到java的项目,最好还是把class缓存起来,提高脚本执行的效率。
晚上把这个功能介绍给同事,让他们试用一下,效果非常好。
Groovy提供了一种有效的扩展系统的功能,还要继续挖掘它的潜力。
明天去上课,周末准备写一个eclipse 插件,看时间了。
|