&gt; I don&#x27;t know Scala or Erlang, but based on the results I would assume both are allocating a posix thread for each thread<p>No. Erlang is <i>only</i> ~five times slower than Go, according to the benchmark
run, which is a marvellous result given the Erlang&#x27;s VM is slow as hell, even
with HiPE. Scala&#x2F;Akka is slower by <i>thirty times</i> under this workload.<p>&gt; But a program can be refactored in all the languages to have a smaller number of workers and a queue of work to be consumed. This would be faster than the Go version, but require more code and complexity.<p>Oh, I bet it wouldn&#x27;t be faster, but it surely would add tons of complexity.
Erlang was <i>specifically designed</i> for programmer to spawn a thread for each
activity. New client connected? Spawn. Need a background computation? Spawn.
Need a connection to external entity? Spawn. Need to do cleanup (reliably)
after this computation terminates? Spawn. Go shares this approach to some
extent.