Actors Guild

Saturday, January 3, 2009

Salmon Run / Actor Frameworks Compared

Sujit Pal has posted a very interesting comparison of Actor Frameworks. I am quite happy with the complexity of the AG Actors compared to those of the other frameworks (note that the Kilim actors have a super-class that does most of the work), and it will be even better in the next version with the initializer replacement (more on that later). The startup code in the ActorManager class became way to complicated, unfortunately, when I limited the size of the AsyncResult array in order to reduce memory consumption for a large number of tasks. You can see the original version here: http://pastebin.com/f4271c099. Maybe I am able to find a better way to support sending a very large number of tasks without processing them.
The performance of AG is not great, but quite ok considering that the messages are all one-way (AsyncResult<Void>) and the scheduler is not optimized yet. AG would be able to play out its strengths when the Actors would communicate in both directions. Then AG would be able to provide a return value without any additional overhead, while the other frameworks would need twice the amount of messages to achieve the same.