【问题标题】:Mapstruct - there's a way to monitor generation times?Mapstruct - 有办法监控生成时间吗?
【发布时间】:2018-03-18 18:16:20
【问题描述】:

我在一个有大约 30 个映射器类的大型项目中工作,其中一些包含很多映射器声明。

我能够将注释处理器任务与 gradle 上的其余构建过程分开,生成映射器需要大约 5 分钟。 (配备 i7 处理器和 SSD 的 PC)

有办法监控映射器的代码生成时间吗?我需要调查在哪里花费了太多时间并进行一些调整。

目前我使用的是 mapstruct 1.1(更新到 1.2 没有帮助)。

【问题讨论】:

    标签: mapstruct


    【解决方案1】:

    这很慢。我们已经收到了关于 Java 9 性能法令的报告(请参阅问题 #1378)。但是,该项目有约 5200 个类和约 400 个映射器。在 Java 8 上大约需要 90 秒,而在 Java 9 上大约需要 150 秒。

    Gradle 是一个普通的 java 进程,所以你可以做一个普通的 Java 监控。如果您愿意,可以将样品发送给我们以便我们对其进行分析,或者您可以将分析结果发送给我们。

    您也可以尝试 PR #1379 使用 jiptack.io 作为参考

    【讨论】:

    • 我实际上在使用 java 8。我怀疑当单个接口中有很多定义时性能会降低,其中一个类中有大约 540 个方法
    • 好的,你有很多方法:)。无论如何,如果您可以进行一些基准测试并与我们分享您的结果,我们可以提高性能
    • 经过一段时间的重新设计我们的映射器,我们已经将一些大型映射器拆分为许多较小的映射器,现在构建时间比以前减少了一半。所以建议是更喜欢许多小型映射器而不是大型映射器。
    • 很高兴知道这一点。谢谢你让我知道。我们或许应该调查一下为什么会这样。如果您想在我们的issue tracker 中提出问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2020-12-16
    • 2020-02-08
    • 2011-09-07
    • 2023-02-14
    相关资源
    最近更新 更多