Java的性能与Scala项目相结合

Mar*_*bel -1 java performance scala maven-3

我正在构建Rest webservice,我希望获得最佳性能.我在考虑使用Scala.我在一些消息来源中读到它比java更快.当我的项目使用maven时,有没有办法实现混合java和Scala更好的性能?我发现maven-scala-plugin但仍然不知道对性能有什么影响.

lmm*_*lmm 5

Java和Scala都编译为相同的字节码; 或多或少你可以在另一个中做的事情.真实的是,有时Scala使得执行性能所需的事情变得更加实际,例如异步I/O在Scala中更容易使用,并且@specialized可以自动生成原始类型的通用代码的实现,这必须完成在Java中手动.IIRC scala图书馆喷洒和未过滤,在拆除之前高度放置在techempower基准测试中.

但这些基准是关于你不可能达到的理论性能限制.实际上,您无法承担实现这些性能水平所需的优化工作."我想要最好的表现"不太可能是你真正的要求.为了使性能提高1%,你会花费10倍的时间进行开发吗?如果你确实需要那种荒谬的性能水平,你应该能够按照techempower的规模运行你自己的基准测试; 这是一项很多工作,但与实际项目中"最佳表现"所需的工作量相比,它是花生.

在更现实的场景中,任何支持异步i/o的语言实现(假设这里是一个典型的REST工作负载)并且没有通过充满散列表查找(即python或ruby)来主动减慢所有内容的速度可能超过足够快的速度.也许你需要并行性(虽然我对此表示怀疑),但幸运的是JVM就是这样.只要您在任一语言中使用合理的框架(即异步框架),您就极不可能在Scala和Java之间的差异发挥作用的水平上工作.

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