JNA 与 POI 理论性能对比
JNA versus POI theoretical performance
假设很少有人在性能方面同时对 JNA 和 Apache POI 进行基准测试,那么理论上哪一个在性能方面更优越?
调查 MS Excel 仅解析 and/or 构建。我已经分叉了 JNA 项目并一直在使用它,但是 POI 似乎与 Excel 一起使用更多,并且很好奇从理论上讲是否有性能优势。
如果有人对两者都有经验或进行过基准测试,那就更好了。也可以在某个时候自己尝试一下。
理论上,使用 JNA 直接实现 C API 函数可以获得更快的性能。
请注意,我指的是直接 C API 实现,而不是使用现有的 COM-based 实现。
对于这种理论上的性能改进,您必须自己实现这些 C 函数。 Java 到 Native 层的处理开销很小,但如果您可以设计代码以最大程度地减少 Java/Native 调用,则您可以创建更适合特定任务的代码。
JNA 中现有的 Excel 实现是:
- Windows 仅
- 一个User-contributed实现,不是核心JNA的一部分
- 依赖COM层,比直接C慢API,估计也比POI慢
- 最近没有更新,这表明它没有像 Apache Poi 那样优化,Apache Poi 正在持续开发中
因此理论上,您 平均而言, 并且可能在大多数情况下,使用 Apache POI 获得比现有 JNA COM-based 代码更好的性能。您还将获得 cross-platform 更广泛测试、实施和优化的库的优势。
理论上,通过 JNA 直接实现 C 函数,您可以在特定平台上的特定任务上获得更好的性能。
假设很少有人在性能方面同时对 JNA 和 Apache POI 进行基准测试,那么理论上哪一个在性能方面更优越?
调查 MS Excel 仅解析 and/or 构建。我已经分叉了 JNA 项目并一直在使用它,但是 POI 似乎与 Excel 一起使用更多,并且很好奇从理论上讲是否有性能优势。
如果有人对两者都有经验或进行过基准测试,那就更好了。也可以在某个时候自己尝试一下。
理论上,使用 JNA 直接实现 C API 函数可以获得更快的性能。
请注意,我指的是直接 C API 实现,而不是使用现有的 COM-based 实现。
对于这种理论上的性能改进,您必须自己实现这些 C 函数。 Java 到 Native 层的处理开销很小,但如果您可以设计代码以最大程度地减少 Java/Native 调用,则您可以创建更适合特定任务的代码。
JNA 中现有的 Excel 实现是:
- Windows 仅
- 一个User-contributed实现,不是核心JNA的一部分
- 依赖COM层,比直接C慢API,估计也比POI慢
- 最近没有更新,这表明它没有像 Apache Poi 那样优化,Apache Poi 正在持续开发中
因此理论上,您 平均而言, 并且可能在大多数情况下,使用 Apache POI 获得比现有 JNA COM-based 代码更好的性能。您还将获得 cross-platform 更广泛测试、实施和优化的库的优势。
理论上,通过 JNA 直接实现 C 函数,您可以在特定平台上的特定任务上获得更好的性能。