truct 和 JMapper 都是不错的选择,尽管 MapStruct 对 SingleShotTime 给出的结果要差得多。
6. 真实模型测试
对于性能测试,我们可以使用 Java Microbenchmark Harness,关于如何使用它的更多信息可以在 这篇文章:https://www.baeldung.com/java-microbenchmark-harness 中找到。
我们为每个转换器创建了一个单独的基准测试,并将基准测试模式指定为 Mode.All。
6.1. 平均时间
JMH 返回以下平均运行时间结果(越少越好):

平均时间
该基准清楚地表明,MapStruct 和 JMapper 均具有最佳的平均工作时间。
6.2. 吞吐量
在这种模式下,基准测试返回每秒的操作数。我们收到以下结果(越多越好):

在吞吐量模式中,MapStruct 是测试框架中最快的,JMapper 紧随其后。
6.3. SingleShotTime
这种模式允许测量单个操作从开始到结束的时间。基准给出了以下结果(越少越好):

6.4. 采样时间
这种模式允许对每个操作的时间进行采样。三个不同百分位数的结果如下:

SampleTime
尽管简单示例和实际示例的确切结果明显不同,但是它们的趋势相同。在哪种算法最快和哪种算法最慢方面,两个示例都给出了相似的结果。
6.5. 结论
根据我们在本节中执行的真实模型测试,我们可以看出,最佳性能显然属于 MapStruct。在相同的测试中,我们看到 Dozer 始终位于结果表的底部。
7. 总结
在这篇文章中,我们已经进行了五个流行的 Java Bean 映射框架性能测试:ModelMapper , MapStruct , Orika ,Dozer, JMapper。
示例代码地址:https://github.com/eugenp/tutorials/tree/master/performance-tests。