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

2024-01-06

我已经阅读过有关 Clojure 与 Scala 的各种报道,同时我意识到两者都有自己的位置。在比较 Clojure 和 Scala 时,有一些考虑因素我还没有获得完整的解释:

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

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

最终,如果 clojure 和 scala 之间足够接近的话,我可能会尝试两者。 Clojure 的一件事是语言看起来very简单的。但话又说回来,Scala 有一个非常灵活的类型系统。但是,我知道 Scala 很快(基于多个个人帐户)。因此,如果 Clojure 明显变慢:我想早点知道而不是晚点知道。


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

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

关于与 Java 的互操作,Scala 更接近 Java,但我确信两种语言都能很好地互操作。在Clojure 编程斯图尔特·哈洛威写道:“[你可以访问]您可以通过 Java 代码实现的任何内容。".

自从 Scala 作者 Martin OderskywroteSun 的 Java 编译器,我认为 Scala 方面也没有失败。 :-)

尽管我也喜欢 Ruby,但你很难选择两种更好的语言。您为什么担心要尝试哪一个?为什么不尝试两者呢? Scala 更有可能成为“下一个 Java”,而很难想象 Lisp 在 50 多年没有这样做之后最终会起飞。但很明显,Lisp 有其独特的抽象级别,而 Clojure 相当简单,因此 Scala + Clojure 不会比(相当复杂的)Scala 难多少,我相信您会很高兴这样做它。

就此而言,它们是互操作的......

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于性能和 Java 互操作性:Clojure 与 Scala 的相关文章

随机推荐

  • 限制tinyMCE中的字符数

    我在用着tinyMCe对于我的项目 一切正常 但现在我想限制插入的字符数tinyMce文本区域 tinyMCE init General options mode textareas theme simple plugins autolin
  • 如何在Unity(2D)中用鼠标移动对象?

    我正在为 Android 制作一个 2D Unity 游戏 请帮我实现鼠标控制 以便可以从手机上控制 using System Collections using System Collections Generic using Unity
  • rbenv 无法更改全局 ruby​​ 版本

    我的 Mac OS X 有一个默认的 ruby ruby v ruby 2 0 0p451 2014 02 24 revision 45167 universal x86 64 darwin13 我安装了 rbenv 和 ruby 版本 2
  • 是否可以覆盖 mat-datepicker 上的 mat-monthly-view 组件以添加周数列?

    我正在尝试将周数列添加到来自角度材料的 mat datepicker 组件中使用的 mat monthly view 组件 我想扩展当前的 mat monthly view 并在某种程度上告诉我的模块 当调用 mat monthly vie
  • 如何修复 django 'django.core.exceptions.ImproperlyConfigured' 的 url 错误?

    from django contrib import admin from django urls import path include urlpatterns path admin admin site urls path polls
  • 尝试将文件上传到 Google 云端硬盘时不断收到“需要登录”错误

    我正在编写一个 chrome 扩展 它将拦截某些下载 当前为 doc 和 docx 文件 并获取这些文件并自动将它们上传到您的 Google 驱动程序文件夹 这是我的清单 Default manifest crap manifest ver
  • Spring webflow 生产中的序列化问题

    我有一个 grails 应用程序使用 webflow 以正确的方式做一些事情 所以在开发模式下一切顺利 我可以完成注册并且对象正常序列化 但是 在生产模式下 部署在带有ssl的tomcat 7上 当需要保存数据时会出现以下错误 简而言之 序
  • R 中逻辑回归的交互[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在 R 中使用函数 glm 运行逻辑回归 我想添加两个自变量之间的交互作用 并且我知道我可以使用 或 来链接这两个术语 示例 我有一个分
  • 直接打开 Xserver 的套接字

    我希望了解 Linux 桌面环境如何与 Xserver 配合使用 我读到大多数窗口管理器不直接打开套接字 而是使用 Xlib 绑定 来编写 WM 的任何语言 或者您可以使用更高级别的绑定 XCB 但我想知道直接向 Xserver 打开套接字
  • 如何将按钮添加到功能区上预先存在的选项卡 (C#)?

    我已成功创建一个新选项卡并将其放在先前存在的选项卡旁边 然后我意识到它上面只有一个按钮 因此 目前 将其放在 主页 选项卡上更有意义 但并没有真正发挥作用 我尝试遵循指南和步行槽 我得到了一个 XML 并将其 XML 更改为以下内容
  • ggplot2和其他函数(R)之间的加号[重复]

    这个问题在这里已经有答案了 我试图得到这个例子 ggplot mpg aes displ hwy geom point 有人可以解释一下这两个函数之间发生了什么吗 ggplot2 是否重载 加 运算符 总结这2个结果是什么 它被分配给什么
  • 如何使用 Vue3 中的设置存储语法在 Pinia 存储中使用 `useRoute`/`useRouter`?

    我一直在尝试让我的 Pinia 商店在 Vue 3 中启动并运行 这一切都非常轻松 直到我想访问 url 中的一些参数 我有一家商店 简化 如下所示 import defineStore from pinia import useRoute
  • 如何从 iOS AVAudioRecorder 获取正确比例的分贝读数?

    我正在尝试使用 AVAudioRecorder 获取 iOS 应用程序中的噪音级别 我正在使用的代码是 self recorder updateMeters float decibels self recorder averagePower
  • 如何向datagridview添加过滤器

    我正在尝试将 csv 文件加载到 datagridview 现在我想向 datagridview 添加过滤 怎么做 这是我读取和加载 csv 文件的方法 openFileDialog1 InitialDirectory C openFile
  • 如何在 XCode 的 Interface Builder 中定义颜色?

    我想在 Interface Builder 中的元素之间复制颜色或使用 RGB 值定义它们 例如 我想将一个按钮的背景颜色复制到另一个按钮而不重复该按钮 或者 在 Interface Builder 中输入准确的 RGB 代码就足够了 这样
  • JQuery .slideDown() 向上滑动

    这有效 但我不知道为什么 在function capIn 我心中的那条线 botcap slideDown slow 应该将 div 向下滑动 它会将其向上滑动 如果我尝试使用 slideUp 没有任何反应 就像它试图将其滑落一样 谁能向我
  • 如果页面没有回发

    我知道这个 if IsPostBack do something 但是 如果页面未回发我需要执行某些操作怎么办 我使用其他还是有其他 更好的方法 最明显的解决方案可能如下所示 if IsPostBack It is a postback e
  • PHP Dom 无法检索元素

    code h1 Galeria h1 div class galeria ul li img src img jpg width 350 height 350 br Teste li ul div dom new DOMDocument d
  • CakePHP - 如何将 html css 助手链接到不同的文件夹

    目前我正在使用它来加载我的 CakePHP 项目中的 css echo this gt Html gt css jquery ui null array inline gt false 假设我将 css 文件放在 css 文件夹中 但是 我
  • 关于性能和 Java 互操作性:Clojure 与 Scala

    我已经阅读过有关 Clojure 与 Scala 的各种报道 同时我意识到两者都有自己的位置 在比较 Clojure 和 Scala 时 有一些考虑因素我还没有获得完整的解释 1 两种语言中哪一种通常是faster 我意识到这会因一种语言特