首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于性能和Java互操作性: Clojure与Scala

关于性能和Java互操作性: Clojure与Scala
EN

Stack Overflow用户
提问于 2009-10-02 05:54:52
回答 6查看 30.8K关注 0票数 83

我已经读过关于Clojure与Scala的各种报道,虽然我意识到两者都有自己的位置。在比较Clojure和Scala时,有一些注意事项我还没有得到完整的解释:

1.)这两种语言中哪一种通常更快?我意识到这会因语言特性的不同而有所不同,但对性能的总体评估会有所帮助。例如:我知道Python字典真的很快。但总的来说,它是一种比Java慢得多的语言。我不想使用Clojure,并在以后遇到这个问题。

2.)与Java的互操作性如何?到目前为止,我所读到的是Scala的原生集合类型,这使得它与大型Java代码库集成有点笨拙,而Clojure遵循一种简单的Iterable/Iterator为中心的方式来与Java类互操作。对此还有更多想法/细节吗?

最终,如果clojure和scala之间的差距足够接近,我可能会同时尝试这两种方法。关于Clojure的一件事是它的语言看起来非常简单。但是话又说回来,Scala有一个非常灵活的类型系统。但是,我知道Scala速度很快(基于多个个人账户)。所以,如果Clojure的速度慢很多:我想知道的越早越好。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-10-01 22:27:39

我认为这两种语言对你来说都足够快了。在比较Python和Java时,将速度差异归咎于语言似乎有点不合理。Java是JIT编译的(除了在移动设备上*),而Python是解释的。仅仅因为两者都使用了字节码,并不意味着它们的实现将具有相当的性能。但是Scala和Clojure都是JVM语言,所以它们应该具有相似的性能。

与Clojure相比,Scala有一些实现上的优势,我希望它有更高的性能。尽管Scala的静态类型通常会转化为比Clojure的鸭子类型更快的速度优势,但Clojure确实支持类型提示,这可以大大提高代码的速度。普通的Scala可能比普通的Clojure更快,但您只需要优化瓶颈。程序的大部分运行时间都是由少量的实际代码生成的。

关于与Java的互操作,Scala更接近Java,但我确信这两种语言都能很好地互操作。Stuart Halloway在Clojure编程中写道:“您可以从Java代码访问任何您能访问的东西。”

自从Scala的作者Martin Odersky编写了Sun的Java编译器以来,我觉得Scala方面也没有出现什么问题。:-)

你很难选择两种更好的语言,尽管我也喜欢Ruby。你为什么要担心该试哪一个呢?为什么不把它们都试一下呢?Scala更有可能成为“下一个Java",而很难想象Lisp会在50多年没有这样做之后最终起飞。但很明显,Lisp有自己独特的抽象层次,而Clojure相当简单,所以Scala + Clojure不会比(相当复杂的) Scala难太多,我相信您会很高兴这样做的。

就这一点而言,它们是互操作的。

* dalvik (android的JVM)在2010年获得了2.2版本的JIT编译器

票数 73
EN

Stack Overflow用户

发布于 2009-10-01 23:00:11

在目前的JVM中,Scala在静态类型方面有一个优势,因为JVM对动态类型的支持--反射--很慢。事实上,一个必须通过同样的技术实现的Scala特性,结构类型,经常因为这个原因而受到警告。

此外,Scala可以很好地接受可变对象,而且一些算法在实现可变对象时速度更快。

因为Scala和Java本质上都是基于类的语言,所以它们更容易互操作。或者,也许是更无缝的。Java类是Scala的类,Scala类是Java的类。当涉及到Scala的单例或Java的静态成员时,可能会出现问题,特别是当有一个框架需要以某种方式工作时。

所以我在这两个方面都选择了Scala。从很多方面来说,Clojure是一种更好的语言,而且(到目前为止)它确实有Scala上没有的非常有趣的特性,但是您可以通过实现完整的功能来获得这样的好处。如果您打算这样做,那么Clojure可能会更好。如果不这样做,那么您可能应该继续使用Scala。

票数 32
EN

Stack Overflow用户

发布于 2009-10-01 22:42:14

"Computer Language Benchmark Game“生成的统计数据是您可能会找到的最好的统计数据。

它们很深入,你可以比较很多种语言。问题是它们没有涵盖Clojure :(

也就是说,提交任何东西都很容易--它都是开源的。

统计数据显示,Scala的速度非常快。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1506728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档