我尝试提高程序的性能。我使用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之间的真正差异?
答案 0 :(得分:0)
答案 1 :(得分: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频率,以避免因涡轮增压,过热和电源管理调控器引起的差异。