The microbenchmark result for spawning short-lived concurrent process:
# Go 1.8.0
$ go build test.go ; for k in 5 50 500 5000 50000 500000; do echo -n $k; time ./test $k > /dev/null; done
5
CPU: 0.00s Real: 0.00s RAM: 2080KB
50
CPU: 0.06s Real: 0.01s RAM: 3048KB
500
CPU: 0.61s Real: 0.12s RAM: 7760KB
5K
CPU: 6.02s Real: 1.23s RAM: 17712KB # 17 MB
50K
CPU: 62.30s Real: 12.53s RAM: 207720KB # 207 MB
500K # this is 10x more!
CPU: 649.47s Real: 131.53s RAM: 3008180KB # 3 GB
# Elixir 1.4.2 (erts-8.2.2)
$ for k in 5 50 500 5000 50000 ; do echo -n $k; time elixir --erl "+P 90000000" test.exs $k > /dev/null; done
5
CPU: 0.53s Real: 0.50s RAM: 842384KB # 842 MB
50
CPU: 1.50s Real: 0.62s RAM: 934276KB # 934 MB
500
CPU: 11.92s Real: 2.53s RAM: 1675872KB # 1.6 GB
5K
CPU: 122.65s Real: 20.20s RAM: 4336116KB # 4.3 GB
50K
CPU: 1288.65s Real: 209.66s RAM: 6573560KB # 6.5 GB
You can find the code here. In terms of performance and memory usage, it's not really, but you can argue about anything else.
No comments:
Post a Comment
THINK: is it True? is it Helpful? is it Inspiring? is it Necessary? is it Kind?