我和朋友在午餐时讨论了神经网络(NN),他声称用Java编写的NN的性能与用C++编写的相似。我知道使用“即时”编译器技术,Java可以做得很好,但是我不太相信。有没有人有任何经验可以阐明这个问题?这个页面是我对这个主题的全部阅读内容。
我对Hotspot JIT和基于配置文件的优化C++之间的比较很感兴趣。
我认为Hotspot JIT(以及任何运行时基于配置文件优化的JIT编译器)的问题在于必须保留统计数据并修改代码。虽然有些情况下这将导致更快的运行速度,但我怀疑在大多数情况下,基于配置文件优化的JIT编译器不会比经过良好优化的C或C ++代码运行得更快。(当然我可能是错的。)
无论如何,通常你会受制于更大的项目,使用与其编写语言相同的语言。或者你将受制于你的同事的知识库。或者你将受制于你所针对的平台(你所针对的架构上是否有JVM可用?)。在很少的情况下,如果你完全自由并且熟悉两种语言,请使用你手头的工具进行比较。那真的是确定哪个更好的唯一方法。
可能是C++,尽管我相信你几乎不会注意到除了启动时间慢之外的差异。但是Java可以加快开发速度并使维护更容易。