1

我正在使用DataTable. Datatable 使用 IDataProvider 填充工具栏和单元格。

我试图弄清楚进行查询所花费的时间。一个典型的查询涉及调用

  • size(...)
  • iterator(...)
  • model(..)

什么是计算这些方法花费的时间的好方法?我可以System.currentTimeMillis()在每个调用中实现类似的东西,但是这样做的“适当”位置是什么?

而且,我想在工具栏中显示这个时间,所以我应该确保“数据加载”部分何时完成。有什么提示吗?

4

2 回答 2

1

由于您实际上不是在测量 DataProvider,而是在 Lucene 方法返回结果,所以我宁愿在 dataprovider 调用的方法中记录时间(假设有类似搜索服务类的东西)。

作为一个优势,其他DataProviders调用相同方法的人也将被测量,而无需接触它们。也许有一个更中心的地方可以放置它?每个搜索请求都必须通过的单一方法?

就个人而言,我喜欢StopWatch来自Apache Commons Lang库,它使用起来非常不言自明。但是,如果您还不需要该库,那么仅将其添加用于时间测量可能会有点过大。currentTimeMillies工作正常。

于 2013-02-08T16:11:06.253 回答
1

如果有的话我会测量iterator()方法中的时间。除非你真的有一个很大的清单并且时间size()很重要,否则我会说这已经足够了。我看不到一种方法可以为您提供在iterator()某处方法中测量的执行时间。

我知道有类似的东西:http ://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/devutils/inspector/RenderPerformanceListener.html但我从未使用过它。

您也可以尝试挂接到RequestCycle. 有一种方法getStartTime() http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/request/cycle/RequestCycle.html#getStartTime()。你可以结束测量onEndRequest()

RequestCycle 也有监听器。http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/request/cycle/IRequestCycleListener.htmlonBeginRequestonEndRequest方法。也许这会有所帮助。

于 2013-02-04T18:21:19.520 回答