【问题标题】:Clojure vs Node.js RAM consumptionClojure 与 Node.js 的 RAM 消耗
【发布时间】:2012-04-21 11:34:27
【问题描述】:

最近我偶然发现了很多 Node.js 和 Clojure 之间的基准测试,例如 thisthisthis。在我看来,与 Ruby 之类的语言相比,Node.js 和 Clojure 的速度差不多(这意味着要快得多)。

问题是,Clojure 在 RAM 消耗方面与 Node.js 相比如何?假设我要编写一个简单的实时聊天应用程序。

如果我要比较 Rails 和 Node.js,我基本上可以预期 Node.js 比 Rails 快 100 倍,占用的内存少 10 倍……但是 Clojure 如何适合这里?

Clojure 在内存消耗方面如何比较?我可以期望它比 Node.js 占用更多的内存,因为它在 JVM 上运行吗?还是这只是一种不再真实的刻板印象?

【问题讨论】:

  • 您在谈论 Rails 与 Clojure,其中一个是 Web 框架,一个是语言。您还应该包含要与 Clojure 和 Node.js 一起使用的 Web 框架。
  • @NiklasB。我知道我正在将框架与语言进行比较,但由于我没有任何 Clojure 经验,因此我正在寻找该语言的一般模式。

标签: ruby node.js memory resources clojure


【解决方案1】:

对于现代硬件上的简单应用程序,Node.js 或 Clojure 都应该没有内存使用问题。

当然,正如 Niklas 指出的那样,这最终将取决于您使用什么框架以及您的应用程序编写得有多好。

Clojure 有相当大的基本内存需求(因为 java 运行时环境/JVM 非常大),但我发现它的内存效率非常高——Clojure 对象只是底层的 Java 对象,因此应该不会太令人惊讶。

另外值得注意的是,直接测量 JVM 应用程序的内存使用情况通常会产生误导,因为 JVM 通常会预先分配比它需要的更多的内存,并且只会以惰性(根据需要)方式进行垃圾收集。因此,虽然表面上的总内存使用量看起来很高,但实际工作集可能非常小(这是您真正关心的性能)。

【讨论】:

  • 您可以随时使用 visualvm 连接到 jvm 并监控有多少 live 对象以及它们占用了多少空间。只需点击分析器/内存。
  • Clojure 也有一个不错的并发模型,而 Ruby 没有。 NodeJS 的事件驱动 IO 也可以用 Java 的 NIO 来近似(使用 Netty!)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多