线程睡眠作为基准

时间:2015-04-09 16:03:15

标签: java benchmarking thread-sleep

使用Thread.sleep作为基准程序通常是个好主意吗?是否有一些资源给出理由?

我要做的是测量我实施的库的加速。给定一组任务(Runnables),我测量执行的t1 =挂壁时间。之后,我使用我的库并行执行它们 - 再次测量壁垒时间t2。让加速只是分数t1/t2

我想知道我应该使用哪些任务来进行正确的测量。到目前为止,我尝试了Thread.sleep(20)并计算了斐波纳契数。结果给出了显着不同的加速比。

根据The Art Of Computer Systems Performance Analysis,任务必须具有合理的教学组合。然而,这本书涵盖了一般的研究领域,将并行化放在一边。因此我假设因为我测量加速(相对数量),我不需要担心它。

从这个角度来看,Thread.sleep是完美的任务例程,因为它不占用CPU时间。但是,我已经阅读了很多关于此技术的帖子,建议使用真正的计算。

所以问题:是否应该使用Thread.sleep来获得正确的加速结果?如果没有,可以接受哪些其他例程以及为什么(可能提供白皮书或其他出版物)?

注意:来自Java的Thread.sleep只是一个例子,问题与语言无关。

0 个答案:

没有答案