迭代的时间是什么意思?
@Measurement(iterations = 50, time = 2)
如果测量时间固定,如果测量的迭代时间超过2秒,迭代将会停止吗?如果这是真的,这会对测量产生什么影响。
答案 0 :(得分:1)
允许您提供实际的测试阶段参数。您可以指定迭代次数,运行每次迭代的时间以及迭代中的测试调用次数(通常与@BenchmarkMode(Mode.SingleShotTime)一起使用来测量一组操作的成本 - 而不是使用循环)。
答案 1 :(得分:1)
对这个问题的直截了当的回答是:"我们必须提供迭代时间(或依赖于默认的迭代时间),否则迭代永远不会停止"。根据基准模式,迭代时间的含义可能不同。例如,Javadoc says:
/**
* <p>Throughput: operations per unit of time.</p>
*
* <p>Runs by continuously calling {@link Benchmark} methods,
* counting the total throughput over all worker threads.
* This mode is time-based, and it will run until the iteration
* time expires.</p>
*/
Throughput("thrpt", "Throughput, ops/time"),
没有办法阻止Java中的不合作执行,除非杀死VM。 (中断线程需要合作:应该检查中断)。因此,如果@Benchmark
调用花费的时间超过请求的迭代时间,除了等待它之外我们没有其他选择。