Switch internal intellij task architecture to akka (actors) ?

Hi,
http://akka.io/ is already pretty long out there and I ask , if there are any plans to switch internal intellij architecture to this model instead of using threads.
Because you (jetbrains) use threads everywhere for many very small single actions, this might potentially improve the performance of the IDE a lot.

7 comments
Comment actions Permalink

Hi there,

Firstly, I am not affiliated with JetBrains in anyway; However I am very interested in Akka.
Do you happen to have any statistical analysis on the potential performance boosts gained from making such a change perhaps?

Alan

0
Comment actions Permalink

just one example
http://www.jayway.com/2010/08/10/yet-another-akka-benchmark/

in a very simplified way you can compare akka to a sql connection pool (instead of thread pool) vs. opening a single connection (single thread) for every sql query (task).

0
Comment actions Permalink

I have not noticed any heavy new thread creation in IntelliJ, there are used ThreadPoolExecutors like everywhere...


0
Comment actions Permalink

Yeah, I'm not sure how relevent switching to Akka would be for IntelliJ, but i'm certainly interested!

Oleg - Perhaps it would be advantageous to investigate where it would be best to switch over to using Akka, make the initial changes, and then gather some preliminary benchmarks?

0
Comment actions Permalink

Just to clarify: I am asking and not saying it is definitly better. And yes I am interested as well :)

0
Comment actions Permalink

I think it is definitely worth investigating!
The source code is currently available on GitHub, and although I have limited knowledge of IntelliJ's core, likewise with akka, I would definitely invest some time into this if you were to start exploring the benefits of such an architectural change :)

0
Comment actions Permalink

Hello Oleg,
IDEA currently uses thread pools for various tasks:
- Fork Join - based thread pool for CPU-intensive short-lived tasks (like inspections) and
- java.util.concurrent.ThreadPoolExecutor - based pool for long or IO-bound tasks (like Git operations).
Given that akka is doing roughly the same I think that performance-wise actors are equivalent to this.
However, there are other advantages of actors (higher-level and simplified concurrency, supervision) which are appealing and which we are very interested to hear about.

-- regards,
Alexey Kudravtsev

JetBrains
http://www.jetbrains.com
"Develop with  pleasure!"
0

Please sign in to leave a comment.