计算吞吐量

Sri*_*vas 4 java performance

我有以下场景。我正在尝试计算 java 的 XSLT 转换器的吞吐量。我有 10 个线程,每个迭代 1000 次。该线程的任务是读取 XML 和 XSLT 文件并将其转换并写入新文件。

我想计算 TPS。你能建议计算TPS的方法吗?

感谢致敬,

斯里尼瓦斯。

Ale*_*ler 5

好吧,您想在开始时启动一个计时器并在所有线程完成时停止它。这为您提供了经过时间 = 结束时间 - 开始时间。事务 = 10 个线程 * 1000 次迭代 = 10000。TPS = 10000 / 已用时间。

进行这种计时的最简单方法是使用 CyclicBarrier。这是使用带有 CyclicBarrier 作为计时器的屏障动作的好文章(参见最后一个示例):

我最后的警告是,像这样的基准测试充满了危险。一些建议:

  • 运行超过 1000 次迭代。您需要让热点预热。最好让测试运行至少 10 分钟。
  • 不要打折 GC 时间。您需要了解您使用的是什么 GC 以及它的暂停时间如何影响您的结果。使用 -verbose:gc 至少运行几次是非常有价值的。有关更多信息,请参见此处:http : //java.sun.com/developer/technicalArticles/Programming/GCPortal/
  • 在同一过程中运行多次重复,直到看到可重复的结果。
  • 进行多次运行,直到您认为这些数字是一致的。