Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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与Scala项目相结合的性能_Java_Performance_Scala_Maven 3 - Fatal编程技术网

Java与Scala项目相结合的性能

Java与Scala项目相结合的性能,java,performance,scala,maven-3,Java,Performance,Scala,Maven 3,我正在构建RESTWebService,我希望有最好的性能。我在考虑使用Scala。我在一些资料中读到它比java快。当我的项目使用maven时,有没有办法混合java和Scala来获得更好的性能?我找到了maven scala插件,但仍然不知道什么对性能有影响 您需要定义性能。定义的一个好方法是使用特定的场景。 例如— 99%的休息请求在1秒内完成 REST服务应在2秒内为WAN网络上的1000个并发客户端提供结果 一旦你有了这个想法,你就需要设计/构建你的系统。性能取决于许多因素 系统

我正在构建RESTWebService,我希望有最好的性能。我在考虑使用Scala。我在一些资料中读到它比java快。当我的项目使用maven时,有没有办法混合java和Scala来获得更好的性能?我找到了maven scala插件,但仍然不知道什么对性能有影响

您需要定义性能。定义的一个好方法是使用特定的场景。 例如—

  • 99%的休息请求在1秒内完成
  • REST服务应在2秒内为WAN网络上的1000个并发客户端提供结果
一旦你有了这个想法,你就需要设计/构建你的系统。性能取决于许多因素

  • 系统的总体结构
  • 使用的数据结构和算法
  • 网络的延迟和带宽
  • 可用资源(内存、CPU和存储类型)
  • 使用的框架和库
  • 数据库
  • 系统中的其他质量(例如,安全性会降低性能) ... ...

Java和Scala都编译成相同的字节码;或多或少,你可以在其中一个地方做任何事情,你也可以在另一个地方做任何事情。事实上,有时Scala会使执行性能要求的操作变得更加实际,例如,异步I/O在Scala中更容易使用,
@specialized
可以为基本类型自动生成泛型代码的实现,这必须在Java中手动完成。IIRC scala库在被删除之前被高度放置在techempower基准中

但这些基准是关于你不可能达到的理论性能极限。在实践中,您不太可能负担得起实现这些性能级别所需的优化工作。“我想要最好的表现”不太可能是你真正的要求。为了获得1%更好的性能,您是否会花费10倍的开发时间?如果你真的需要那种荒谬的性能水平,你应该能够在techempower的规模上运行自己的基准测试;这是一个很大的工作,但与你在一个真正的程序中获得“最佳性能”所需要的工作量相比,这是微不足道的

在更现实的场景中,任何支持异步i/o(这里假设一个典型的REST工作负载)并且不通过充满哈希表查找(即python或ruby)来主动降低速度的语言实现都可能足够快。也许您需要并行性(尽管我对此表示怀疑),但幸运的是JVM具备这一点。只要您在任何一种语言中使用合理的框架(即异步框架),您就不太可能在Scala和Java之间的差异产生差异的级别上工作


和往常一样,性能的关键远不止是技术选择,而是测量和实验。轮廓,自动化;寻找瓶颈,解决它们,并衡量您的解决方案是否有效。在任何实际的代码库中,几分钟的评测将产生比Java和Scala之间任何可能的差异都大得多的加速。

这是一个很难回答的问题,而不知道具体细节。你需要什么样的表演?它是否需要扩展到大量请求,或者请求是否需要快速返回?为什么您需要最好的性能?它是用例所必需的,还是只是一个很好的例子?Scala和Java都编译成在JVM上执行的字节码,因此理论上它们具有相同的性能。我会首先研究开发一个好的可维护解决方案,弄清楚它的性能是否足够,然后优化您需要的部分。Maven不会影响性能。Webservice每秒会有大量请求,并会生成报告,因此使用最佳解决方案(具有最佳性能)对我来说很重要。是的,我读到理论上Scala和Java应该具有几乎相同的性能,但我也读到一些库有更好的库,例如用于快速排序的库。如果您想要最佳性能,Java和Scala都不是最佳选择。你需要一种直接编译成机器代码的语言。基本上,你的要求是每个人都想要的。如果性能是最重要的因素,那么您需要考虑可伸缩性。归根结底是设计和方法论,而不是语言。如果您的解决方案是可扩展的,并且性能不够好,您可以为其提供更多资源。与公认的答案相比,您更喜欢这种解释。。