我有以下场景。我正在尝试计算 java 的 XSLT 转换器的吞吐量。我有 10 个线程,每个线程迭代 1000 次。线程的任务是读取 XML 和 XSLT 文件并将其转换并写入新文件。
我想计算TPS。能否请您推荐一下TPS的计算方法?
感谢和问候,
斯里尼瓦斯。
最佳答案
好吧,您想在开始时启动一个计时器,并在所有线程完成时停止它。这给你耗时 = 结束时间 - 开始时间。事务 = 10 个线程 * 1000 次迭代 = 10000。TPS = 10000/耗时。
进行这种计时的最简单方法是使用 CyclicBarrier。这是一篇很好的文章,介绍了使用带有 CyclicBarrier 的屏障操作作为计时器(参见最后一个示例):
我最后的警告是,像这样的基准测试充满了危险。一些建议:
- 运行超过 1000 次迭代。您需要让热点预热。最好让测试至少运行 10 分钟。
- 不要打折 GC 时间。您需要了解您正在使用的 GC 以及它的暂停时间如何影响您的结果。至少运行几次 -verbose:gc 是非常有值(value)的。更多信息请看这里:http://java.sun.com/developer/technicalArticles/Programming/GCPortal/
- 在同一过程中多次重复,直到您看到可重复的结果。
- 运行多次,直到您认为数字一致为止。
关于java - 计算吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166354/