Live data from Hacker News

Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

dcs.gla.ac.uk

51–59 of 59 posts

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#51
post #48
post #37

Earlier quoted context omitted.

There are various multi-language benchmarks, e.g. https://benchmarksgame-team.pages.debian.net/benchmarksgame/

Those benchmarks do not compare like-for-like. Often the Haskell versions try to solve the problems elegantly with high-level functional code at the expense of performance, e.g. see Mandelbrot. GHC Haskell is an advanced optimising compiler that will produce considerably faster functional code than both Erlang and Java. For maximum performance, it is perfectly possible to write imperative array-oriented code in Haske…

> GHC Haskell is…

Please consider all the things Phil Trinder likely knows about GHC ;-)

https://scholar.google.co.uk/citations?user=3Bs_EA0AAAAJ

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#52
post #51
post #48

Earlier quoted context omitted.

Those benchmarks do not compare like-for-like. Often the Haskell versions try to solve the problems elegantly with high-level functional code at the expense of performance, e.g. see Mandelbrot. GHC Haskell is an advanced optimising compiler that will produce considerably faster functional code than both Erlang and Java. For maximum performance, it is perfectly possible to write imperative array-oriented code in Haske…

> GHC Haskell is… Please consider all the things Phil Trinder likely knows about GHC ;-) https://scholar.google.co.uk/citations?user=3Bs_EA0AAAAJ

My post was more for the benefit of other readers, who might have otherwise concluded that modern GHC is "slow". There are many ways to compare the 'execution time' of e.g. Java and Haskell. Idiomatic Haskell code may well be slower than (traditional) idiomatic Java code. But these days more and more functional code is written in Java/Scala/Clojure and the JVM does not optimise such code nearly as well as GHC.

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#53
post #52
post #51

Earlier quoted context omitted.

> GHC Haskell is… Please consider all the things Phil Trinder likely knows about GHC ;-) https://scholar.google.co.uk/citations?user=3Bs_EA0AAAAJ

My post was more for the benefit of other readers, who might have otherwise concluded that modern GHC is "slow". There are many ways to compare the 'execution time' of e.g. Java and Haskell. Idiomatic Haskell code may well be slower than (traditional) idiomatic Java code. But these days more and more functional code is written in Java/Scala/Clojure and the JVM does not optimise such code nearly as well as GHC.

> Idiomatic Haskell code may well be slower…

So it's a good thing that those "benchmarks do not compare like-for-like" because that allows the inclusion of idiomatic Haskell code?

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#54
post #47

Any thoughts on Cloud Haskell?

If you are comparing to Go then just regular Haskell has all the same capabilities and more (lightweight threads and communication primitives, plus extra cool stuff like software transactional memory). Cloud Haskell is trying to put it more in the Erlang camp where you can distribute beyond a single process transparently, but I don't think it is well maintained or really production ready.

More specifically, thoughts comparing Akka, Erlang and Cloud Haskell, which are 3 different implementations of the actor model.

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#55
post #53
post #52

Earlier quoted context omitted.

My post was more for the benefit of other readers, who might have otherwise concluded that modern GHC is "slow". There are many ways to compare the 'execution time' of e.g. Java and Haskell. Idiomatic Haskell code may well be slower than (traditional) idiomatic Java code. But these days more and more functional code is written in Java/Scala/Clojure and the JVM does not optimise such code nearly as well as GHC.

> Idiomatic Haskell code may well be slower… So it's a good thing that those "benchmarks do not compare like-for-like" because that allows the inclusion of idiomatic Haskell code?

I can certainly see merit in that idea. The problem is that it's often not clear what the idiomatic style for a particular language applied to a particular problem is. Many of the Haskell solutions also look quite old, predating for example the now standard Haskell "Vector" library.

It's a useful resource, but I think we should we wary of making very general remarks based on the results.

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#56
post #55
post #53

Earlier quoted context omitted.

> Idiomatic Haskell code may well be slower… So it's a good thing that those "benchmarks do not compare like-for-like" because that allows the inclusion of idiomatic Haskell code?

I can certainly see merit in that idea. The problem is that it's often not clear what the idiomatic style for a particular language applied to a particular problem is. Many of the Haskell solutions also look quite old, predating for example the now standard Haskell "Vector" library. It's a useful resource, but I think we should we wary of making very general remarks based on the results.

We should we wary of making very general remarks, period.

The benchmarks game is not restricted to "the idiomatic style" so it isn't a problem that "the idiomatic style" for a particular problem is often not clear.

> Many of the Haskell solutions also look quite old…

We would be very happy to accept new programs:

https://salsa.debian.org/benchmarksgame-team/benchmarksgame/...

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#57
post #56
post #55

Earlier quoted context omitted.

I can certainly see merit in that idea. The problem is that it's often not clear what the idiomatic style for a particular language applied to a particular problem is. Many of the Haskell solutions also look quite old, predating for example the now standard Haskell "Vector" library. It's a useful resource, but I think we should we wary of making very general remarks based on the results.

We should we wary of making very general remarks, period. The benchmarks game is not restricted to "the idiomatic style" so it isn't a problem that "the idiomatic style" for a particular problem is often not clear. > Many of the Haskell solutions also look quite old… We would be very happy to accept new programs: https://salsa.debian.org/benchmarksgame-team/benchmarksgame/...

> We should we wary of making very general remarks, period.

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#58
post #57
post #56

Earlier quoted context omitted.

We should we wary of making very general remarks, period. The benchmarks game is not restricted to "the idiomatic style" so it isn't a problem that "the idiomatic style" for a particular problem is often not clear. > Many of the Haskell solutions also look quite old… We would be very happy to accept new programs: https://salsa.debian.org/benchmarksgame-team/benchmarksgame/...

> We should we wary of making very general remarks, period.

Do you mean you agree? Do you mean the statement is possibly self-defeating? Do you mean you noticed the typo? Do you mean…?

Re: Comparing Languages for Engineering Server Software: Erlang, Go, and Scala/Akka [pdf]

#59
post #50
post #28

Earlier quoted context omitted.

There were many languages that we would like to have considered. We do expect the performance of Elixir to be pretty similar to Erlang as it runs on the same VM (BEAM). With regards the "alternatives considered", Section 2 outlines key characteristics of server languages, and Table 1 analyses a selection of languages against these characteristics. We welcome others to report results for other languages using the benc…

Hi Phil, One thing you might find interesting - a small, crude experiment suggests that changing maxBlocking.erl to use process hibernation for those dormant processes could almost double the max number of processes Erlang can support. I changed maxBlocking.erl's final few lines to read p() -> erlang:hibernate(?MODULE, q, []). q() -> receive "hello" -> io:format("Hello") end. RabbitMQ uses hibernation in many places…

Thanks for the info. We're not ninja developers in any of the languages.
Post reply on HN