与从 Eclipse 启动的客户端相比,什么可能会使 Jasper Reports 在构建的 RCP 客户端中变慢?

问题描述 投票:0回答:1

我有一个使用 Tycho / Maven 构建的 RCP 应用程序。构建同时使用 pom 和清单,换句话说,它实际上不是 pom 首先或清单首先。

我将 Eclipse RCP 目标平台从 4.24 升级到 4.32。

后来我注意到,在 Tycho 构建的客户端中,使用 Jasper Reports 生成 PDF 报告的时间比以前长了 2 - 3 倍。

Jasper reports 与 JDT 密切合作来编写报告。

这些我都试过了

  • 确保上下文类加载不是问题
  • 禁用 JDT 插件的延迟加载
  • 确保使用 Eclipse-BundleShape: dir 导出解压/分解的插件
  • 升级了 JasperReports、DynamicJasper 和 JDT
  • 确保 JDT 真正在 Eclipse 和带有分析器的构建客户端中使用

分析从 eclipse 运行的客户端以及从命令行构建的 mvn 后,瓶颈就很明显了:ClassLoader#getResourceAsStream。

在两个分析会话中,我有相同的调用计数,但从 Eclipse 开始,28k 调用需要 2 秒,而在构建的客户端上 28k 调用需要 277 秒。

Eclipse 客户端 Eclipse Client

Mvn / 第谷客户端 Mvn / Tycho Client

有谁知道为什么资源加载的时钟时间有这么大的差异吗?

有人知道我可以研究什么吗?我认为未来的唯一方法是确保构建首先是 pom 或清单,以便我可以确保构建的客户端的行为方式与从 eclipse 启动的客户端相同。

java jasper-reports osgi rcp tycho
1个回答
0
投票
  1. 确保类加载器一致性:验证 Eclipse 和 Maven 构建的客户端中使用的类加载器是否相同。

  2. 优化资源打包:确保资源在两种环境中以相同的方式正确捆绑和访问。

  3. 改进文件系统访问:检查文件系统访问模式中是否存在任何差异并优化一致性。

  4. 调整 JVM 设置:确保两个环境中的 JVM 设置相同,以避免性能差异。

  5. 启用资源缓存:对经常访问的资源实施缓存机制以减少加载时间。

  6. 详细分析:使用高级分析工具来识别和解决任何潜在的性能瓶颈。

通过解决这些问题,您可以在 Eclipse 和 Maven 构建的客户端之间实现更一致的性能。

© www.soinside.com 2019 - 2024. All rights reserved.