-1

我试图提高我的程序的性能。我用 JMH 比较了我的两个版本,但我不知道是否有真正的区别。

我的结果示例:

                Version1(op/s)   score error(op/s)         Version2      score error

Benchmark 1   12382150,338           1277638,481        18855038,903    50835,395

Benchmark 2     11708047,2           4061755,193        18843828,659    41966,689

Benchmark 3      7814465,4           9483927,071        18821356,961    72364,651

Benchmark 4   10481146,451             464691,58        13936537,089    40726,506

Benchmark 5    6863734,072            175974,219         9709381,687    21774,816

这些结果能否显示版本 1 和版本 2 之间的真正区别?

4

2 回答 2

0

IIRC,基准分数 (ops/s) 是 90% 分布的算术平均值(即过滤掉极端异常值)。因此,无论您如何分割,版本 2 在所有基准测试中的得分都更高。

于 2015-07-08T09:39:04.643 回答
0

以我的经验,你需要考虑操作的规模来推理它。您正在对长度相当微不足道的基准方法进行基准测试,并且可能使结果难以阅读。例如,从基准 1 的结果中得出:

              Version1                  Version2
Benchmark 1   12382150 +-1277638 ops/s  18855038+-50835 ops/sec
same as       80+-7 ns/op                53+-1 ns/op

使用“-bm avgt -tu ns”可以轻松修复报告,它将基准模式设置为平均时间,时间单位为纳秒。基准的规模也有助于确定改进的重要性以及对相关基准的怀疑程度。如果您担心基准测试中的差异,您还应该确保以足够的迭代次数(-i)和分叉(-f)运行基准测试。您还应该确保在安静的机器上运行基准测试。还要确保您可以在基准测试期间设置 CPU 频率,以避免由涡轮增压、过热和电源管理调节器引起的差异。

于 2015-08-04T09:53:51.623 回答