Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNA与POI理论性能_Java_Performance_Apache Poi_Jna - Fatal编程技术网

Java JNA与POI理论性能

Java JNA与POI理论性能,java,performance,apache-poi,jna,Java,Performance,Apache Poi,Jna,假设很少有人在性能方面同时对JNA和ApachePOI进行了基准测试,那么从理论上讲,哪一个在性能方面更优越 仅查看MS Excel解析和/或构建。我已经分叉了JNA项目并一直在使用它,但POI似乎更多地用于Excel,我很好奇从理论上讲,两者是否都有性能优势 如果任何人都有这两方面的经验或基准,那就更好了。从理论上讲,使用JNA直接实现C API函数可以获得更快的性能 请注意,我指的是直接的C API实现,而不是使用现有的基于COM的实现 为了在理论上提高性能,您必须自己实现这些C函数。对于J

假设很少有人在性能方面同时对JNA和ApachePOI进行了基准测试,那么从理论上讲,哪一个在性能方面更优越

仅查看MS Excel解析和/或构建。我已经分叉了JNA项目并一直在使用它,但POI似乎更多地用于Excel,我很好奇从理论上讲,两者是否都有性能优势

如果任何人都有这两方面的经验或基准,那就更好了。从理论上讲,使用JNA直接实现C API函数可以获得更快的性能

请注意,我指的是直接的C API实现,而不是使用现有的基于COM的实现

为了在理论上提高性能,您必须自己实现这些C函数。对于Java到本机层,您可能会产生少量的处理开销,但是如果您可以设计代码来最小化Java/本机调用,那么您就有可能创建在特定任务中更好的代码

JNA中现有的Excel实现是:

  • 仅限窗口
  • 用户贡献的实现,而不是核心JNA的一部分
  • 依赖于COM层,它比direct C API慢,并且可能比POI慢
  • 最近没有更新,这表明它没有ApachePOI优化,后者正在不断开发中
因此,从理论上讲,与现有的基于JNA COM的代码相比,使用ApachePOI平均(可能在大多数情况下)可以获得更好的性能。您还将获得跨平台、更广泛测试、实现和优化的库的优势


从理论上讲,通过JNA直接实现C函数,您可以在特定的平台和特定的任务上获得更好的性能。

两者都不可比
Apache poi
能够创建或使用
Excel
文件,而无需安装
Excel
应用程序或本机共享的
Windows
库。认为C API比Java快的观点过于简单,特别是在Java代码和本机代码之间进行大量调用的情况下,与纯Java解决方案相比,性能可能会降低。再加上JIT的好处,只有你才能真正地说“它很复杂”。@markrotVeel这就是为什么我说“可以”而不是“愿意”,并限定了“特定平台/特定任务”。至少理论上是这样。非常有趣!JNA项目经常更新,但是“实现”很难使用,而且不完整。必须像上面提到的那样分叉并包含更多COM功能。可以理解的是,COM的速度较慢,我也从工作中的POC那里听说过。到目前为止,JNA满足了我的需求,需要在一个月内并行使用一些C/C++API。详细介绍了基于MS的选项。听说POI“内存不足”,但“实现”是用户贡献的,不完整。。。请记住,这是一个依赖于用户贡献的开源项目!核心项目非常好,能够直接映射您自己的功能。正如您所观察到的,基于COM的Office产品更多的是一种概念证明,而不是POI所期望的“一刀切”解决方案。如果您已经进行了分叉和添加,也许您可以帮助对您所改进的内容做出贡献!哦,当然,“难以使用和…不完整”听起来像是对JNA的侮辱。按照设计,这些实现都是演示,因此它们并不意味着完整。很抱歉。Matthias B.确实说过他有一个COMTypelibraries回购协议,可以与JNA一起使用。我还设置了一个JNA开发环境,但是如果我没记错的话,在一些Windows网络示例中构建一直失败。花了几个小时就没时间了。我的更改不会与其他包集成。我可以再看看这个!