使用JMH控制方法的顺序

8
我在我的项目中使用JMH基准测试。 我有一个用@Benchmark注释的方法1和方法2。 我希望顺序是:方法1,方法2,方法1,方法2...以此类推... 也就是说:我希望方法2紧随方法1之后。有没有办法做到这一点? 谢谢!

无论顺序如何,你不应该得到相同的结果吗? - Peter Lawrey
方法2需要使用方法1中内置的ArrayList方法。 - TaliG
你好 @TaliG,我想知道如何确保方法2在方法1执行后执行?我尝试实现了这个功能,但是方法1和方法2会异步执行。在这种情况下,我无法控制执行顺序。 - Thesharing
1个回答

6

JMH执行@Benchmark方法的顺序通常是无关紧要的:这些运行是相互隔离的,因此结果是独立的。但如果您仍然希望特定的顺序,则@Benchmark将按字典顺序执行,因此,请按照该顺序重命名您的方法。


这个方法是可行的(所以感谢您的答案),但现在我的方法被称为 _0_january()_1_feburary()_2_march(),... 太丑陋了! JMH 可能应该支持 @Benchmark(reportOrder = 2) String march() {} - Geoffrey De Smet
3
我同意Geoffrey的观点。控制基准测试的执行/报告顺序会很好。在我的情况下,我希望@Benchmark方法按照它们在类文件中出现的顺序执行。我有两个用例:1. 我正在对代码进行分析,我想快速控制哪个方法先运行,这样我就可以对其进行分析。2. 这些方法是相关的。我希望以更符合读者直觉的顺序报告基准数。我更喜欢通过方法排序来控制,而不是注释,因为参数容易出错(例如,两个注释可能具有相同的参数值)。 - Gili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接