我正在尝试测量应用程序的每个操作所花费的时间,因为我正在重建遗留系统.
现在我在控制器级别这样做:
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
}
Run Code Online (Sandbox Code Playgroud)
重要提示:我想将其移动到过滤器并在每个操作的开始和结束时自动执行它.
什么应该是最好的方法?提前致谢.
PS.:获取System.currentTimeMillis()和实例化对象有什么区别?性能?
在操作开始时,请执行以下操作:
long now = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
在操作结束时,请执行以下操作:
System.out.println( (System.currentTimeMillis() - now) + " ms");
Run Code Online (Sandbox Code Playgroud)
并将您的动作放在这两条线之间
免责声明:
我根据java回答了这个问题(在标记被编辑之前),因此请弄清楚您的标记。
您应该能够使用Grails过滤器执行此操作:
class TimeFilters {
def filters = {
timeCheck(controller: '*', action: '*') {
before = { model ->
...
}
after = { model ->
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你看一下源代码java.util.Date:
public Date() {
this(System.currentTimeMillis());
}
Run Code Online (Sandbox Code Playgroud)
所以这只是创建和获取时间的性能开销: new Date().getTime()
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |