我正在使用JMH。我有两种方法,我想分别进行基准测试。我有一个方法(方法A)创建一个对象数组。我希望另一种方法(方法B)使用在方法A中创建的相同对象数组。问题是,在方法A完成运行时,数组内容不再存在于方法A范围之外。如何处理方法之间的共享状态?
答案 0 :(得分:0)
您应该创建一个@Setup
块,它创建一个可用于序列化/反序列化的实例集合。这个@Setup
块必须做两件事;创建要序列化的对象,和它们的序列化版本。
然后你要做的是编写测试methodA
,在所有对象中执行序列化(并将它们与已知的良好序列化字段进行比较),然后进行第二次测试methodB
,执行反序列化对象并将它们与已知的良好值进行比较。
本质上,您不应该在测试方法中使用设置代码,并且不应该假设它们之间有任何类型的排序。拥有在@Setup
中执行一次的设置代码,然后只读取这些值。确保您返回值或以某种方式检查它们,以便它们不被JIT消除。