I have been trying to switch from Eclipse to IntelliJ IDEA recently. However, IDEA 8, the latest version, has shown me horribly unresponsive UI. Especially, the slow scroll in the editor window was intolerable; any keystroke that involves scrolling took up 100% CPU and only a couple lines were scrolled for a second. I could hardly edit my source code and had to go back to Eclipse.
Today, I’ve finally figured out what exactly was causing the problem – the intel video driver of X.org X11 server. In Fedora 10, the default video acceleration method of the intel video driver is ‘EXA’. According to the man page of the intel video driver (type man intel
in your terminal), EXA is a newer and simpler acceleration architecture designed to better accelerate the X Render extension.
However, it seems like there’s a known performance issue with EXA that slows down most Java Swing applications and some web pages in Firefox. So, I switched back to XAA, the old XFree86 based acceleration architecture. Switchback is as simple as modifying the Device
section of the /etc/X11/xorg.conf
file:
Section "Device"
Identifier "Default Video Card"
Driver "intel"
...
Option "AccelMethod" "XAA"
...
EndSection
After restarting the X server, I am seeing noticeable improvement in the responsiveness of all GUI applications including IDEA 8, Firefox, and even some GTK+ applications.
Update (Dec 16, 2008)
However, some users have reported that switching back to XAA causes artifacts in rendering and segmentation faults in some applications. Actually, I also experienced some UI glitches in a particular application, but I didn’t care much about it. A couple days ago, I found a way to improve the overall performance of EXA. Update your xorg.conf
as follows:
Section "Device"
Identifier "Default Video Card"
Driver "intel"
...
Option "AccelMethod" "EXA"
Option "MigrationHeuristic" "greedy"
Option "ExaNoComposite" "false"
Option "ExaOptimizeMigration" "true"
...
EndSection
IntelliJ wouldn’t perform as well as it does with XAA, but you will find it acceptable.