当前位置: 首页 > 面试题库 >

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

杨鸿畅
2023-03-14
问题内容

我已经读过Clojure vs.
Scala的各种论述,而我意识到两者都有自己的位置。关于将Clojure和Scala进行比较时,有一些注意事项尚未得到完整的解释:

1.)两种语言中哪一种通常 更快
?我意识到这从一种语言功能到另一种语言功能都会有所不同,但是对性能进行总体评估会有所帮助。例如:我知道Python字典的速度非常快。但作为一个整体,它是一个
比Java慢语。我不想和Clojure一起去解决这个问题。

2.)与Java的互操作性如何?到目前为止,我所读到的只是Scala具有本机集合类型,使其与大型Java代码库集成有点笨拙,而Clojure遵循一种简单的以Iterable
/ Iterator为中心的方式来与Java类进行互操作。还有其他想法/细节吗?

最终,如果Clojure和Scala之间的距离足够近,我可能会同时尝试它们。关于Clojure的一件事是该语言似乎 非常
简单。但是话又说回来,Scala具有非常灵活的类型系统。但是,我知道Scala速度很快(基于多个个人帐户)。因此,如果Clojure的速度明显慢一些:我想早点知道。


问题答案:

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

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

关于带有Java的互操作,Scala更接近Java,但是我确信两种语言都可以很好地互操作。在 编程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编译器


 类似资料:
  • OAuth 2.0提供了丰富的具有明确的安全性质的授权框架。然而,尽管在其自身看来是一个带有许多可选择组件的丰富且高度可扩展的框架,本规范有可能产生许多非可互操作的实现。 此外,本规范中留下一些必需组件部分或完全没有定义(例如,客户端注册、授权服务器性能、端点发现等)。没有这些组件,客户端必须针对特定的授权服务器和资源服务器被手动并专门配置,以进行互操作。 本框架设计具有一个明确的期望,即未来工作

  • 编辑:代码已更改,以提供更简单的测试用例 我正在创建一个简单的客户机/服务器应用程序,它使用Curve25519进行密钥交换。客户端用C实现,带有mbedtls,服务器用实现。使用BouncyCastle。 不幸的是,在客户端和服务器上生成的共享密钥不同。下面是生成公钥/私钥的代码摘录(我硬编码了一些值以便于调试)。 客户端密钥生成(mbedtls)代码,主要从https://github.com

  • 问题内容: 我正在与一个以Java中的图形渲染器为目标的小组合作。我试图弄清楚以 java.awt.Graphics2D 为目标是否会向前兼容。即,其他库(例如JavaFX)是否可以显示 Graphics2D 实例的渲染? java.awt.Graphics2D 和 javafx.scene.canvas.GraphicsContext 之间是否存在互操作性? 或者,如果不是直接在 Graphic

  • ed25519 java和js nacl都实现了ed25519加密签名方法。然而,我从ed25519 java获得了一个公钥和一个签名消息(使用公钥对应的私钥签名),并尝试在js中使用公钥验证签名消息。这给出了一个值,即签名的消息不能用公钥打开。 我的问题是,难道不能在Java中登录并在Javascript中验证签名吗?如果是,或者不是,原因是什么? Java代码: 检查有效调用返回true。 输

  • 我对这个项目很感兴趣,想了解更多关于RedisGgraph内部的信息,并寻找Redis-Streams和Redis-Ggraph模块之间互操作性的可行性。 因此,我想知道您在Redis的哪些本地数据结构中构建了您自己的“图形数据”数据结构,当我们运行TYPE myGgraph命令时,该数据结构会显示出来。 是RedisGgraph模块(或其子组件、节点、边、路径)内部的图,是建立在Redis的已知

  • 更新3。KOTLIN现在正式支持ANDROID开发。由谷歌。啊啊啊啊啊啊!