我有以下几种情况。我正在尝试计算Java的XSLT转换器的吞吐量。我有10个苏黎世,每次重复1000次。线程的任务是读取XML和XSLT文件并对其进行转换并写入新文件。

我要计算TPS。您能建议一下TPS的计算方法吗?

感谢致敬,

斯里尼瓦斯。

最佳答案

好吧,您想在开始时启动一个计时器,并在所有线程完成后将其停止。这样就可以得到经过时间=结束时间-开始时间。事务= 10个线程* 1000次迭代=10000。TPS = 10000 /经过的时间。

进行这种计时的最简单方法是使用CyclicBarrier。这是将屏障动作与CyclicBarrier用作计时器的一个很好的写法(请参见最后一个示例):

  • http://tech.puredanger.com/2007/11/11/thread-coord/

  • 我最后的警告是,像这样的基准测试充满了危险。一些建议:
  • 运行1000多次迭代。您需要让热点变热。最好您让测试至少运行10分钟。
  • 不要打折GC时间。您需要了解所使用的GC及其暂停时间如何影响您的结果。使用-verbose:gc至少运行几次非常有价值。有关更多信息,请参见此处:http://java.sun.com/developer/technicalArticles/Programming/GCPortal/
  • 在同一过程中运行多个重复,直到看到可重复的结果。
  • 进行多次运行,直到您相信数字一致为止。
  • 07-24 09:38
    查看更多