方法范围之外的JMH对象

时间:2016-04-03 07:03:11

标签: jmh

我正在使用JMH。我有两种方法,我想分别进行基准测试。我有一个方法(方法A)创建一个对象数组。我希望另一种方法(方法B)使用在方法A中创建的相同对象数组。问题是,在方法A完成运行时,数组内容不再存在于方法A范围之外。如何处理方法之间的共享状态?

1 个答案:

答案 0 :(得分:0)

您应该创建一个@Setup块,它创建一个可用于序列化/反序列化的实例集合。这个@Setup块必须做两件事;创建要序列化的对象,它们的序列化版本。

然后你要做的是编写测试methodA,在所有对象中执行序列化(并将它们与已知的良好序列化字段进行比较),然后进行第二次测试methodB,执行反序列化对象并将它们与已知的良好值进行比较。

本质上,您不应该在测试方法中使用设置代码,并且不应该假设它们之间有任何类型的排序。拥有在@Setup中执行一次的设置代码,然后只读取这些值。确保您返回值或以某种方式检查它们,以便它们不被JIT消除。

相关问题