2

迭代的时间是什么意思?

@Measurement(iterations = 50, time = 2)

如果测量的时间是固定的,如果测量的迭代时间超过 2 秒,迭代将停止?如果这是真的,这对测量有什么影响。

4

2 回答 2

1

该问题的直接答案是:“我们必须提供迭代时间(或依赖默认的迭代时间),否则迭代将永远不会停止”。根据基准模式,迭代时间的含义可能会有所不同。例如,Javadoc 说

/**
 * <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调用花费的时间比请求的迭代时间长,我们除了等待之外别无选择。

于 2015-04-01T14:03:22.830 回答
1

文档中:

允许您提供实际的测试阶段参数。您可以指定迭代次数、每次迭代运行多长时间以及迭代中的测试调用次数(通常与 @BenchmarkMode(Mode.SingleShotTime) 一起使用来衡量一组操作的成本——而不是使用循环)。

于 2015-04-01T12:54:53.993 回答