在这篇博文中,我深入研究了 Rust、Go、Java、C#、Python、Node.js 和 Elixir 等流行语言在异步和多线程编程之间的内存消耗比较。
前段时间,我不得不比较一些旨在处理大量网络连接的计算机程序的性能。我看到这些程序的内存消耗存在巨大差异,甚至超过 20 倍。一些程序消耗的内存略多于 100 MB,但其他程序在 10k 连接时几乎达到 3 GB。不幸的是,这些程序非常复杂,而且在功能上也各不相同,因此很难直接比较它们并得出一些有意义的结论,因为这不是一个对等的比较。这让我产生了创建综合基准的想法。
我用各种编程语言创建了以下程序:
让我们启动 N 个并发任务,其中每个任务等待 10 秒,然后在所有任务完成后程序存在。任务的数量由命令行参数控制。
在