在另一篇文章中,我谈到了在javonet中支持原始数组的必要性。这可以解释为什么拉动~2GB的双阵列比.net中的同类代码慢大约10倍?我附上了JProfiler的截图,以防它有所帮助。 (另外,虽然没有显示,但JProfiler还显示了大约1GB的Double对象,如果我们只有原语那么我认为不应该存在;但是,这是因为它是否缓慢的原因还是因为对.net的~40,000次调用方法,以及与Javonet等之间的所有"东西最终花了几百毫秒左右?)
更新5/3/2018:
如果您阅读第一个回复的评论,您最终会看到一个解决慢速问题的构建(hf16)。 Javonet看起来非常快......我想这个版本最终将成为核心产品。
答案 0 :(得分:0)
Jonathan,深入分析您的案例,您的绩效问题的答案来自各种因素。让我逐一解释:
针对错误的字符串交换和双数据类型转换修复不稳定的beta版本 由于以下更新中包含的较新版本, ...链接已删除...
请仅将其用于测量目的。我们很乐意知道您的结果。很快,这些变化将以稳定状态合并到官方版本,我们会在事后通知您。
总结:您获得的效果结果有不同的原因。其中一些正在通过上面提到的beta补丁解决,其中一些与您测量和操作的方式有关。 Javonet在许多情况下是.NET和Java之间最快的原生集成技术, 在许多客户的测试中得到认可,并且在高频交易,实时数据等解决方案中受到信赖处理,控制制造和医疗设备等... 当然,仍然存在性能变化的情况和情况。实现最高成果是我们的主要优先事项之一,遵循我们的一项原则"每次发布都要更快"。如果需要,我们始终接受客户的性能挑战,实施按需改进。我们接受你的,并将努力优化大型原始数组检索。
请测试上面的贴片应该会有明显的改善,但仍会受到环境原因的影响:4和5。
更新2018-04-30:我们已经开始实施现代化优化模块,以解决像您这样的场景,保持几乎等同于原生的最高性能。在下面的链接中,您会发现alpha版本适用于" usePrimitiveArraysMode"对于非通用方法返回" double []"没有ref / out参数。即double [] CreateArray()或double [] CreateArray(int size)等...
http://download.javonet.com/1.5/javonet-1.5hf15-primitivearrays-opti-jtdn.jar