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();
}

这对计算时间有什么帮助?你能在两个闭包中打印出当前时间,然后做一些相关和数学运算吗?