PHPStorm performance tweaks for Ubuntu 12.10 64 bit

I had some rather major and odd performance issues with PHPStorm in Ubuntu 12.10 64 bit running Unity/Compiz.

Using openJDK I'll get one set of odd issues.
Using oracleJDK I get a second set of odd issues.

Various Java vmoption tweaks had minimal impact on performace.   It was most noticable whenever PHPStorm has to refresh the screen[open a dialog box, popup a notification, open a new project, open a new file, open a settings page, etc]

After trying a lot of things, I found a rather simple set of changes which helps IMMENSELY.

The only PHPStorm configuration setting changes are:
General-->Synchronization : make sure sync when frame is activated/deactivated is DISABLED.
Appearance-->Animate Windows: make sure this is disabled

My guess is that disabling sync just helps keep indexing down.  While the animate window is the main culprit, with it causing a round robin set of issues where PHPStorm tries to do something funky....Java tries to translate it based on my running a Radeon graphics card....but those features aren't really enabled because the 4200 Radeon does not have an up to date v12.8 AMD driver[AMD dropped support], the latest version of X-windows will not run properly with the v12.6, and the open source drivers have other issues.   So then Compiz goes in and tries to make some hacks, as well as modifying the call......  and in short it's a royal mess with no one actually to "blame"

So what helped was actually making some changes to Compiz using the Compiz Configuration Settings Manager.   Important to note is that I created a .desktop file to launch PHPStorm...among the settings is StartupWMClass=jetbrains-phpstorm and it is this class name I use in CCSM

The biggest performance boost was in CCSM-->Effects-->Animations
For every one of the animations, add a new option..  It can be ANY of the animations, just make sure to set it to the minimum display time[50] and the window match is "class=jetbrains-phpstorm".  Also make sure that this rule is the FIRST rule[use the up arrow to reorder it] so it gets selected for all phpstorm windows before one of the other rules activates.

This lets compiz handle all animations for phpstorm, sets them for the minimum time, and sped things up tremendously.

For good measure, I disable almost all the other effects for PHPStorm.  For example, in Window Decorator I change the "Shadow windows" from "any" to any & !(class=jetbrains-phpstorm).  

The only option I did NOT update for that was
CCSM-->Effects-->Window Decoration-->Decoration Windows.   I found disabled decoration windows made the menus go really wonky.
I also updated 3D Windows and Fading Windows and added & !(class=jetbrains-phpstorm) to them.  As this is a logical operation, parenteses matter.  Ie:  changing Toolbar | Utility | Dialog | Normal | Unknown
to Toolbar | Utility | Dialog | Normal | Unknown & !(class=jetbrains-phpstorm) will be unpredictable, wheras
(Toolbar | Utility | Dialog | Normal | Unknown) & !(class=jetbrains-phpstorm)  preserves clarity

Lastly I updated CCSM-->Window Management-->Scale and disabled scale for PHPStorm.....
Note, since your options may differ than mine check ALL your enabled options to see where you can specify a window and test to see if they help.

For reference:
I install PHPStorm to /opt/PhpStorm-buildnumber
I create a soft link at /opt/phpstorm to the latest version .  That way I can change versions easily.
I created a desktop file at:

The contents of that file is:

[Desktop Entry]
Name=JetBrains PhpStorm
Exec=/opt/phpstorm/bin/ %f
Comment=Develop with pleasure!
Name[en_US]=JetBrains PhpStorm

1 comment

There is no need to guess what is slow, its can be profiled.

IDE FROZEN: Please follow and attach a thread dump of frozen app.
IDE SLOW: Please follow and provide a CPU dump, for performing slow activity


Please sign in to leave a comment.