我有一个使用 Tycho / Maven 构建的 RCP 应用程序。构建同时使用 pom 和清单,换句话说,它实际上不是 pom 首先或清单首先。
我将 Eclipse RCP 目标平台从 4.24 升级到 4.32。
后来我注意到,在 Tycho 构建的客户端中,使用 Jasper Reports 生成 PDF 报告的时间比以前长了 2 - 3 倍。
Jasper reports 与 JDT 密切合作来编写报告。
这些我都试过了
分析从 eclipse 运行的客户端以及从命令行构建的 mvn 后,瓶颈就很明显了:ClassLoader#getResourceAsStream。
在两个分析会话中,我有相同的调用计数,但从 Eclipse 开始,28k 调用需要 2 秒,而在构建的客户端上 28k 调用需要 277 秒。
有谁知道为什么资源加载的时钟时间有这么大的差异吗?
有人知道我可以研究什么吗?我认为未来的唯一方法是确保构建首先是 pom 或清单,以便我可以确保构建的客户端的行为方式与从 eclipse 启动的客户端相同。
确保类加载器一致性:验证 Eclipse 和 Maven 构建的客户端中使用的类加载器是否相同。
优化资源打包:确保资源在两种环境中以相同的方式正确捆绑和访问。
改进文件系统访问:检查文件系统访问模式中是否存在任何差异并优化一致性。
调整 JVM 设置:确保两个环境中的 JVM 设置相同,以避免性能差异。
启用资源缓存:对经常访问的资源实施缓存机制以减少加载时间。
详细分析:使用高级分析工具来识别和解决任何潜在的性能瓶颈。
通过解决这些问题,您可以在 Eclipse 和 Maven 构建的客户端之间实现更一致的性能。