java - Haskell 与 JVM 性能对比

标签 java scala haskell jvm

我想为一个网站编写一个后端系统(它将是一个自定义的搜索式服务)。它需要高度并发和快速。考虑到我对并发的期望,我计划使用 Haskell 或 Scala 等函数式语言。

不过,速度也是重中之重。 http://benchmarksgame.alioth.debian.org结果似乎表明 Java 几乎与 C/C++ 一样快,Scala 通常相当不错,但对于大多数任务,Haskell 的范围从慢到慢很多。

有没有人有使用 Haskell、Scala 和 Java 来执行高并发任务的性能基准测试/经验?

我看到的一些网站表明 Scala 存在内存泄漏,这对于像这个这样的长期运行的服务来说可能是可怕的。

我应该用什么来编写我的服务,或者在选择之前我应该​​考虑什么(性能和并发性是最高优先级)?

谢谢

最佳答案

这个问题表面上是关于使用 GHC 编译的代码与在 JVM 上运行的代码的性能。但是还有很多其他因素在起作用。

  • 是否有一个团队在做这件事,还是只有你一个人?
    • 该团队对这些语言的熟悉程度/舒适程度如何?
    • 这是您(所有人)都想花时间学习的语言吗?
  • 谁来维护它?

行为

  • 这个项目的预计生命周期是多久?
  • 何时(如果有)可以接受停机时间?
  • 这个程序会做什么样的处理?
    • 是否有知名的图书馆可以帮助您?
    • 您愿意推出自己的图书馆吗?用那种语言做这件事有多难?

社区

  • 您打算从开源中提取多少?
  • 您计划为开源做出多少贡献?
  • 社区非常活跃和乐于助人
    • 在 StackOverflow 上
    • 在 irc 上
    • 在 Reddit 上
    • 开发您可能会用到的开源组件

工具

  • 您需要 IDE 吗?
  • 您需要代码分析吗?
  • 您想做什么样的测试?
  • 该语言的文档有多大帮助?对于您将使用的库?
  • 是否有工具可以满足您甚至不知道的需求?

您应该考虑一百万个其他因素。无论您选择 Scala、Java 还是 Haskell,我几乎可以保证您将能够满足您的性能要求(这意味着,它可能需要大致相同数量的智能来满足您在任何这些语言中的性能要求)。 Haskell 社区是出了名的乐于助人,而我在 Scala 社区的有限经验与 Haskell 非常相似。就我个人而言,与至少具有一流功能的语言相比,我开始发现 Java 相当讨厌。此外,还有更多的 Java 程序员,导致 Internet 上有关 Java 的信息激增,无论是更好的(你需要知道的更可能是在那里)或更糟(需要筛选的噪音很多)。

tl;dr 我很确定性能大致相同。考虑其他标准。

关于java - Haskell 与 JVM 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185282/

相关文章:

java - 字符串不适用于带有 java 7 和 Tomcat 7 的 JSP 中的 Switch 大小写

java - Butterknife 不适用于 Include 标签

斯卡拉玩 : How to inject test Database into Controller for testing

scala - RDD中是否有任何 Action 保持顺序?

function - 将一个列表映射到另一个列表(在 Haskell 中,+抽象解决方案) - 'map reduce' ?

javax.ws.rs.NotFoundException : HTTP 404 Not Found angular 1. 5

java - Eclipse PDE - 如何在标准属性 View 中对属性进行排序

scala - Future map 和 foreach 的行为

Python 比已编译的 Haskell 更快?

haskell - 如何将 "extend"设为一个(部分)记录选择器?