我目前使用Java,网上读了很多有关Erlang的内容,我有两个大问题:
Erlang会比简单的Java慢多少(如果有差异)?
我假设这里Java将比Erlang更快,因为从网上的基准测试结果来看,Erlang表现不佳。那么,在我的特定情况下,我需要多少个CPU才能使Erlang在单线程Java之上脱颖而出呢?在了解Erlang一段时间后,我发现大多数大型Erlang系统都包含相当数量的C/C++代码。
这是出于速度原因吗(我的想法),还是其他原因?即为什么需要这样做?
我了解到大多数计算机中处理器数量正在增加,线程模型变得困难(我同意),但我希望知道何时会"跨越界限",这样我就可以在正确的时候更改语言/范例。
一些背景/上下文信息:
我正在工作的是Java服务端,非常依赖于CPU,并且容易进行并行处理。这是因为通常一个单一的入站更新(通过TCP)会触发多个(100个)输出的更改。
计算通常非常简单(少量循环,大量算术运算),而且输入速度很快(每秒100次)。
目前我们正在4个CPU的机器上运行,并在每个机器上运行多个服务(因此多线程处理毫无意义,并且使用同步块等要求使其多线程化的操作会导致Java运行得更快)。现在有了加速的强烈推动力度,我们现在可以访问24个处理器的机器(如果需要,每个进程都可以拥有这些处理器),所以我想知道最佳方案是什么:是使用大规模多线程的Java,还是像Erlang这样更容易编码的语言。