Grails-如何计算任何操作的执行时间?
因为我正在重建一个遗留系统,所以我试图测量应用程序的每个操作所花费的时间 现在,我正在控制器级别执行此操作:Grails-如何计算任何操作的执行时间?,grails,Grails,因为我正在重建一个遗留系统,所以我试图测量应用程序的每个操作所花费的时间 现在,我正在控制器级别执行此操作: def actionStart() { session.startTime = new Date().getTime() } def actionEnd() { def endTime = new Date().getTime() timeHandler(endTime, session.startTime) } def timeHandler(end, star
def actionStart() {
session.startTime = new Date().getTime()
}
def actionEnd() {
def endTime = new Date().getTime()
timeHandler(endTime, session.startTime)
}
def timeHandler(end, start){
return end - start
}
重要提示:我想将其移动到过滤器中,并在每个操作的开始和结束时自动执行它
最好的方法应该是什么?提前谢谢
PS:获取
System.currentTimeMillis()
和实例化对象之间有什么区别?性能?在操作开始时,请执行以下操作:
long now = System.currentTimeMillis();
在操作结束时,执行以下操作:
System.out.println( (System.currentTimeMillis() - now) + " ms");
把你的行动放在这两条线之间
免责声明:
我根据java(在编辑标记之前)回答了这个问题,所以请澄清您的标记 您应该能够使用来执行此操作:
class TimeFilters {
def filters = {
timeCheck(controller: '*', action: '*') {
before = { model ->
...
}
after = { model ->
...
}
}
}
}
如果您查看java.util.Date
的源代码:
public Date() {
this(System.currentTimeMillis());
}
因此,这只是创建和获取时间的性能开销:
new Date().getTime()
这是今天出现的,在DZone/GroovyMag中提到:您可以使用afterInceptor和BeforeCeptor方法来实现
def actionArray = [:];
def afterInterceptor = {
def time = System.currentTimeMillis() - actionArray[actionUri]
println("Used time for action " + actionUri + "is: " + time + " ms");
}
def beforeInterceptor = {
actionArray[actionUri] = System.currentTimeMillis();
}
这对计算时间有什么帮助?你能在两个闭包中打印出当前时间,然后做一些相关和数学运算吗?