Feature suggestion, multithreaded compilation, inspections, etc

Hi JetBrains,
With dual-core processors flooding the mainstream PC market and today's launch of first quad-core processor, it will be very useful to have processor intensive tasks in IDE multi-threaded. The first tasks to multi-thread would be compilation and inspections.
I am not expert with these, but as dependency analyzer is already build passing compilation tasks to blocking queue and workers should not be very hard. Also inspections should be relatively easy to multi-thread. In order not to sacrifice single-threaded performance, workers could be called directly and sequentially if machine has only one processor.

1 comment
Comment actions Permalink

I am in 100% agreement that Jetbrains needs to add better support for multi-core desktops.

You are talking about parallelizing tasks into multiple threads so that a multi-core desktop can crunch through it faster. That is one part of leveraging multi-cores; But a more basic issue is that if you have multi-cores, you no longer need to wait for a long-running cpu intensive task like 'inspect code' or 'search in path', etc. to finish. All long running tasks should run in the background by default, allowing you to continue to work while one core is curnching on that background task.

I had written something on this before:
IDEA Background Tasks (As of 5261)

The ultimate would be if I could control how many cpus to use for background tasks. With my dual-core hyperthreaded P4 desktop, WindowsXP thinks I have 4 cpus. I could assign a maximum of 2 cpus for background tasks. Then, when I launch a Inspect Code or Search in Path, etc., it could launch in the background and have 2 threads working on it in parallel. Meanwhile, I could continue editing/viewing code or even launching additional Find Usages or Inspect Code. I'm not sure how responsive IDEA would be, but it might work.

Jetbrains should really consider making IDEA 'multi-core ready' as a major item for 6.5 or 7.0 release. This is the kind of feature which helps keep it as the 'professional' Java IDE choice. Also, the TeamCity product would benefit from parallelization of 'inspection' tasks. I have a SunFire T2000 that I run a server application on. It has 32 simultaneous processing threads. TeamCity would really hum on that if it parallelized all of it's jobs.

Eclipse already does the background tasks better than IDEA today, although it has some warts. Also, as far as I know, it doesn't do parallization of a background tasks, e..g. splitting up a compilation or search into multiple threads.

I have some additional ideas on how to implement this, and will be revising my previous article when I have time.


Please sign in to leave a comment.