EAP Builds' Usability

I have been an avid user of IntelliJ IDEA since I first saw it about 2 years ago. I have been tracking the changes that it has been going through with a lot of interest. I currently use IDEA 3.0.5 for doing my work. A week ago, I downloaded the latest EAP build. I was looking forward to seeing all the new features that have been put into the product since the 3.0 series.

However, I was pretty disappointed. As a person that works on really large projects, the usability of the EAP release was not good. I am continuously adding and removing paths from the project settings. We upgrade library files, checkout branches, etc during a normal workday. So, the first thing that I noticed was the whole "Optimizing Performance" dialog fiasco. I found the older threads discussing the topic but was unable to understand what had changed since the 3.0 series that required this process. The 3.0.5 release, for example, performed quite well for all refactorings. I never noticed a performance problem on my 1 GHz PIII laptop. The optimizing performance process, on the other hand, is noticeably slow and unbearable. It takes forever on my box. It is bad enough that I wouldn't want to upgrade to a new release even if it was free.

I am hoping that someone on this forum would take into account this feedback and would let this unhappy user breathe a little easier about the future of his favorite IDE.

Thank you,
Amit Gollapudi

28 comments
Comment actions Permalink

I'm pretty sure they just replaced the "Rebuilding indices..." text (or whatever it used to be) with "Optimizing performance...". Other than that I'm pretty sure nothing actually takes longer.

The text annoys me too, though, because it's really not optimizing performance (if all it's doing is scanning source files and building the PSI stuff for them, which I'm pretty sure is all that's happening). It comes across to me like marketing to dumb people, and that sort of thing annoys me, because I think users are smart enough to figure out what building indices means (and if they're not, "Optimizing performance" isn't really the same thing, so it's no better).

Oh, and the reason your Optimizing Performance probably took so long is that there's a new file format for the PSI (I think) so all your old stuff had to be converted. Try restarting IDEA; it should be faster.

0
Comment actions Permalink

Could you please point us more precisely which operations are slow? How much
time they take?

--
Valentin Kipiatkov
JetBrains, Inc
http://www.intellij.com
"Develop with pleasure!"

"Amit Gollapudi" <agollapudi@demandsolutions.com> wrote in message
news:32808580.1060564016039.JavaMail.itn@is.intellij.net...

I have been an avid user of IntelliJ IDEA since I first saw it about 2

years ago. I have been tracking the changes that it has been going through
with a lot of interest. I currently use IDEA 3.0.5 for doing my work. A
week ago, I downloaded the latest EAP build. I was looking forward to
seeing all the new features that have been put into the product since the
3.0 series.
>

However, I was pretty disappointed. As a person that works on really

large projects, the usability of the EAP release was not good. I am
continuously adding and removing paths from the project settings. We
upgrade library files, checkout branches, etc during a normal workday. So,
the first thing that I noticed was the whole "Optimizing Performance" dialog
fiasco. I found the older threads discussing the topic but was unable to
understand what had changed since the 3.0 series that required this process.
The 3.0.5 release, for example, performed quite well for all refactorings.
I never noticed a performance problem on my 1 GHz PIII laptop. The
optimizing performance process, on the other hand, is noticeably slow and
unbearable. It takes forever on my box. It is bad enough that I wouldn't
want to upgrade to a new release even if it was free.
>

I am hoping that someone on this forum would take into account this

feedback and would let this unhappy user breathe a little easier about the
future of his favorite IDE.
>

Thank you,
Amit Gollapudi



0
Comment actions Permalink

Your right, the "Optimizing Performance" stage is annoying, but you get used to it ;)

One piece of advice is to leave unnecessary files out of your project (html files, etc.)
I have only included sources, libraries and a couple of xml files.

0
Comment actions Permalink


"Keith Lea" <keith@cs.oswego.edu> wrote in message
news:26624752.1060569536032.JavaMail.itn@is.intellij.net...

I'm pretty sure they just replaced the "Rebuilding indices..." text (or

whatever it used to be) with "Optimizing performance...". Other than that
I'm pretty sure nothing actually takes longer.
>

The text annoys me too, though, because it's really not optimizing

performance (if all it's doing is scanning source files and building the PSI
stuff for them, which I'm pretty sure is all that's happening).


I didn't think so (that it isn't optimizing or it's only a marketing blurb -
it sounds pretty much what a tech would write :), and thought optimizing
does what it says: pre-parse the project once so that later accesses are
instantaneous.

But it's only (one of) my interpretations of optimization ...


0
Comment actions Permalink

One piece of advice is to leave unnecessary files out of your project

(html files, etc.)

I have only included sources, libraries and a couple of xml files.


Or add those directories to the exclude list. I think those aren't parsed
also.


0
Comment actions Permalink

I've already listed the specifications for my box. So, let's say I go back and add a jar file to the project path. For example, let's say that I add the OJB (db.apache.org) release jar and sources to my project paths. This takes about 3-4 minutes or so. In 3.0 version of the product, it took hardly around 30 seconds. And OJB would be one of the smaller dependencies of our project. I can post more accurate benchmarks if you'd like.

To answer some of the other thoughts posted on this thread. I don't really care if the message "Optimizing Performance" is a renamed label somewhere in the system or not. I don't care as a user if there's some system-related format change that makes this process take longer. All I know is that what used to take a negligible amount of time takes forever. That's lost productivity. I can slim down the contents of the project path as someone suggested but that is not a solution. It's a workaround. I also don't think that it's a practical alternative for me.

I appreciate all the feedback ...
Amit Gollapudi

0
Comment actions Permalink

don't forget you are using an alpha version of the code. I don't think it is reasonable to expect them to optimize every build they do.

0
Comment actions Permalink

No comments on this, changing libs at runtime is not a thing I do much.

But I think that a lib is optimized only once:

add a lib -> idea optimizes the lib.
remove the lib.
add lib again -> idea only checks that there are no changes in the lib.

See also:

http://www.intellij.net/tracker/idea/viewSCR?publicId=12395
http://www.intellij.net/tracker/idea/viewSCR?publicId=10452


0
Comment actions Permalink

And that's what these forums are for, right? What else is the EAP forum meant for if not to point out problems that we would like to see fixed before the release?

0
Comment actions Permalink

I agree that this is only a problem for users that modify their project paths often. We have 4-5 live branches at any given time. I hate having to wait 10+ minutes while the IDE runs through this process every time I switch to a branch. I actually found myself avoiding working with branches because of the lag time required to switch to one. That, in my opinion, is a bad thing for an IDE to do. That's why I reverted back to 3.0.5.

0
Comment actions Permalink

Could I suggest setting up a different project for each branch?

Amit Gollapudi wrote:

I agree that this is only a problem for users that modify their
project paths often. We have 4-5 live branches at any given time. I
hate having to wait 10+ minutes while the IDE runs through this
process every time I switch to a branch. I actually found myself
avoiding working with branches because of the lag time required to
switch to one. That, in my opinion, is a bad thing for an IDE to do.
That's why I reverted back to 3.0.5.



0
Comment actions Permalink

Not a bad suggestion. I actually tried that at one point. Except, the branch tags changing every 2 weeks due to our release cycle. Again, these proposals, however useful, are workarounds. New releases are supposed to improve our lives not deteriorate it. :)

0
Comment actions Permalink

if you want each release to be better from a performance and usability stand point you really need to stick to offical releases and not eap builds

0
Comment actions Permalink

Although I don't like repeating myself, I will point out again that I'm not asking for instant gratification. I am just posting this in hopes that the development team would take these opinions into consideration when planning their list of things to fix before release. I never expected the EAP builds to perform as good as official releases. Another thing that I hoped for was a general community discussion on the topic, which it has generated.

0
Comment actions Permalink

The project I work on is pretty large, but I don't have to make significant
changes to a project once it is created -- thus I don't have such a painful
issue with the "optimization" time. However, yes, the optimizing stage
is much longer in Aurora -- during project creation, long enough to go have
lunch. I have accepted this as the price of doing business. But I can see
that this could be an issue -- I have warned my non-early adopter colleagues
to expect a much longer project creation step when they are ready to start
trying betas again.

I think what would be useful is some sort of response as to what is gained
through the additional "optimization" work and what sort of improvement is
likely to be attained through "optimization" of the "optimization" step :)

"Amit Gollapudi" <agollapudi@demandsolutions.com> wrote in message
news:32808580.1060564016039.JavaMail.itn@is.intellij.net...

I have been an avid user of IntelliJ IDEA since I first saw it about 2

years ago. I have been tracking the changes that it has been going through
with a lot of interest. I currently use IDEA 3.0.5 for doing my work. A
week ago, I downloaded the latest EAP build. I was looking forward to
seeing all the new features that have been put into the product since the
3.0 series.
>

However, I was pretty disappointed. As a person that works on really

large projects, the usability of the EAP release was not good. I am
continuously adding and removing paths from the project settings. We
upgrade library files, checkout branches, etc during a normal workday. So,
the first thing that I noticed was the whole "Optimizing Performance" dialog
fiasco. I found the older threads discussing the topic but was unable to
understand what had changed since the 3.0 series that required this process.
The 3.0.5 release, for example, performed quite well for all refactorings.
I never noticed a performance problem on my 1 GHz PIII laptop. The
optimizing performance process, on the other hand, is noticeably slow and
unbearable. It takes forever on my box. It is bad enough that I wouldn't
want to upgrade to a new release even if it was free.
>

I am hoping that someone on this forum would take into account this

feedback and would let this unhappy user breathe a little easier about the
future of his favorite IDE.
>

Thank you,
Amit Gollapudi



0
Comment actions Permalink

I have the same problem as Amit, and I always create new projects for new
branches. But then again for each branch I create, I have to wait some 30
minutes before idea passes through all the jar files. Since the libraries in
our codebase don't vary much, I tried to use libraries from one common
branch and source code in the others.

Does not look like idea recognizes that the jar files are shared across
projects, it again tries to load all the jars.

-Dash.

"Nathan Brown" <nedski@yahoo.com> wrote in message
news:bh8eha$6ji$1@is.intellij.net...

Could I suggest setting up a different project for each branch?

>

Amit Gollapudi wrote:

I agree that this is only a problem for users that modify their
project paths often. We have 4-5 live branches at any given time. I
hate having to wait 10+ minutes while the IDE runs through this
process every time I switch to a branch. I actually found myself
avoiding working with branches because of the lag time required to
switch to one. That, in my opinion, is a bad thing for an IDE to do.
That's why I reverted back to 3.0.5.

>
>


0
Comment actions Permalink

Does not look like idea recognizes that the jar files are shared across
projects, it again tries to load all the jars.


Does not happen to me. My setup:

...\projects
........\idea-prj1
........\idea-prj2
........\lib

with all my shared libs under the lib dir.

With this setup, I sometimes change shared libs (newer <-> older versions)
and they are optimized only once - both when re-added to the same project or
when added to different projects.

Of course, libs "private" to a project aren't shared - even if they are
copies of the same file.

Maybe this can be added to the optimizer - if several libs in different
projects have the same name and the same contents (allthough they are
different files in differenet dirs) the libs can be optimized only once.



0
Comment actions Permalink

The only time I've had serious issues with the length of time spent
optimising was when I was trying out the JDK's new incremental garbage
collector. That made the process take forever (I killed off IDEA after about
an hour) whereas with the normal garbage collector it was taking a minute or
two at most. Perhaps you're coming across something similar?

Another suggestion, in case you haven't already tried it: consider
increasing both the initial and maximum stack size for IDEAs JVM. You never
know, it might help...

As far as what the additional optimisation work is doing, that topic has
been discussed before on the newsgroup. I don't have a URL for you, but a
search back through previous postings should reveal something. The gist of
the answer was that Aurora creates far more detailed indexes than Ariadna,
presumably so you can have things like Go To Symbol, the method call
hierarchy and suchlike.

Hope that helps,
Vil.

Charles Eubanks wrote:

The project I work on is pretty large, but I don't have to make significant
changes to a project once it is created -- thus I don't have such a painful
issue with the "optimization" time. However, yes, the optimizing stage
is much longer in Aurora -- during project creation, long enough to go have
lunch. I have accepted this as the price of doing business. But I can see
that this could be an issue -- I have warned my non-early adopter colleagues
to expect a much longer project creation step when they are ready to start
trying betas again.

I think what would be useful is some sort of response as to what is gained
through the additional "optimization" work and what sort of improvement is
likely to be attained through "optimization" of the "optimization" step :)

"Amit Gollapudi" <agollapudi@demandsolutions.com> wrote in message
news:32808580.1060564016039.JavaMail.itn@is.intellij.net...

>>I have been an avid user of IntelliJ IDEA since I first saw it about 2


years ago. I have been tracking the changes that it has been going through
with a lot of interest. I currently use IDEA 3.0.5 for doing my work. A
week ago, I downloaded the latest EAP build. I was looking forward to
seeing all the new features that have been put into the product since the
3.0 series.

>>However, I was pretty disappointed. As a person that works on *really*


large projects, the usability of the EAP release was not good. I am
continuously adding and removing paths from the project settings. We
upgrade library files, checkout branches, etc during a normal workday. So,
the first thing that I noticed was the whole "Optimizing Performance" dialog
fiasco. I found the older threads discussing the topic but was unable to
understand what had changed since the 3.0 series that required this process.
The 3.0.5 release, for example, performed quite well for all refactorings.
I never noticed a performance problem on my 1 GHz PIII laptop. The
optimizing performance process, on the other hand, is noticeably slow and
unbearable. It takes forever on my box. It is bad enough that I wouldn't
want to upgrade to a new release even if it was free.

>>I am hoping that someone on this forum would take into account this


feedback and would let this unhappy user breathe a little easier about the
future of his favorite IDE.

>>Thank you,
>>Amit Gollapudi



--
Vilya Harvey
vilya.harvey@digitalsteps.com / digital steps /
(W) +44 (0)1483 469 480
(M) +44 (0)7816 678 457 http://www.digitalsteps.com/

Disclaimer

This e-mail and any attachments may be confidential and/or legally
privileged. If you have received this email and you are not a named
addressee, please inform the sender at Digital Steps Ltd by phone on
+44 (0)1483 469 480 or by reply email and then delete the email from
your system. If you are not a named addressee you must not use,
disclose, distribute, copy, print or rely on this email. Although
Digital Steps Ltd routinely screens for viruses, addressees should
check this email and any attachments for viruses. Digital Steps Ltd
makes no representation or warranty as to the absence of viruses in this
email or any attachments.

0
Comment actions Permalink

I've already listed the specifications for my box. So, let's say I go back

and add a jar file to the project path. For example, let's say that I add
the OJB (db.apache.org) release jar and sources to my project paths. This
takes about 3-4 minutes or so. In 3.0 version of the product, it took
hardly around 30 seconds. And OJB would be one of the smaller dependencies
of our project. I can post more accurate benchmarks if you'd like.

How big this jar is (size, number of classes)? (I don't have this library
myself.)

--
Valentin Kipiatkov
JetBrains, Inc
http://www.intellij.com
"Develop with pleasure!"


"Amit Gollapudi" <agollapudi@demandsolutions.com> wrote in message
news:21908711.1060612815589.JavaMail.itn@is.intellij.net...

I've already listed the specifications for my box. So, let's say I go back

and add a jar file to the project path. For example, let's say that I add
the OJB (db.apache.org) release jar and sources to my project paths. This
takes about 3-4 minutes or so. In 3.0 version of the product, it took
hardly around 30 seconds. And OJB would be one of the smaller dependencies
of our project. I can post more accurate benchmarks if you'd like.
>

To answer some of the other thoughts posted on this thread. I don't

really care if the message "Optimizing Performance" is a renamed label
somewhere in the system or not. I don't care as a user if there's some
system-related format change that makes this process take longer. All I
know is that what used to take a negligible amount of time takes forever.
That's lost productivity. I can slim down the contents of the project path
as someone suggested but that is not a solution. It's a workaround. I also
don't think that it's a practical alternative for me.
>

I appreciate all the feedback ...
Amit Gollapudi



0
Comment actions Permalink

I promise I'll reinstall the EAP build tonight and come back with some more concrete numbers and jar file references for you guys to play with.

Thank you,
Amit Gollapudi

0
Comment actions Permalink

Interesting. I don't have the incremental option enabled. However, I do see why creating an index of all symbols in the project path would be a time-consuming process. If that is where a majority of the time is being spent, then perhaps, that part of the process should be made optional. I would happily sacrifice a "Go To Symbol" feature for a more responsive Project Path wizard.

0
Comment actions Permalink

In article <9483255.1060613133859.JavaMail.itn@is.intellij.net>,
charles decroes <spam@decroes.com> wrote:

don't forget you are using an alpha version of the code. I don't think it is
reasonable to expect them to optimize every build they do.


True enough.

That said, if something is a deal killer, then it needs to be pointed
out early and often. Deal killers can sometimes last an awfully long
time, especially if the people behind the product do not know that a
given thing is a deal killer. They may have use cases that bring out
the deal killer come up once a month, while the user sees it once a day.

The OPs use case is fairly common, actually. Releasese and branches
every two weeks, with several projects in that two week lockstep. Thus,
he would be making new projects on a weekly basis, if not daily. That
multi-hour delay would go from a minor tedium for new employees into a
reason not to touch the software with a ten foot pole.

For what it is worth, Apple's Project Builder indexes the entire JDK
each time it fires up. This takes about ten minutes on my laptop, about
twenty on a friend's iBook. Not bad if you only make new projects once
a year, but an amazing pain if you are learning, and thus creating new
projects every time you want to learn a new topic.

As a result, he would rather not use Apple's tool, because his projects
tend to be small learning experience projects, and having to wait twenty
minutes from "I wonder what xxx does" to "Ah! I now know." is too long.
I just showed him the "stop indexing" button, but I suspect the damage
is done - he will re-investigate the Apple IDE when XCode ships.

Again, it is EAP, it is not done yet, and I expect they will do great
things to fix IDEA. That said, if they know that creating projects
should (must?) take under a minute for a user including an average of 20
big libraries, they might consider the issue earlier. Further, instead
of a simple optimization, they might consider more complicated redesigns
like lazy indexing, backgrounding, or otherwise making it possible to
work effectively before the indexing is completely done.

Scott

0
Comment actions Permalink

Or at least it could be spawned off in a thread...

0
Comment actions Permalink

I would happily sacrifice a "Go To Symbol" feature for a more responsive

Project Path wizard.

Not only goto symbol. Also error checking, and code completion at least.

And as I said, each jar/lib should be "optimized" only once. Even if you
remove the jar from the project and add it later - or add the same jar to
another project.

A current feature is that almost every other eap changes the cache format,
and with each new version everything is reoptimized...


0
Comment actions Permalink

I don't upgrade my EAP builds often enough to see the cache format changes every time. Like I mentioned before, this was the first one I had downloaded since 3.0.5. Given that, based on some of the numbers from other folks on this thread, I think that 30 minutes for "optimizing" is just way too long any way you slice it.

Although optimizing the jar only once helps, it can still be a pain for a lot of users. For example, someone that upgrades dependent libraries and the corresponding sources for major releases, this still involves a lot of optimizing. Therefore, I still think that this is something that should be looked at.

My basic point is this: Something happened between 3.0.5 and the latest EAP builds to cause this large cost to the user. I would just like to see an option to avoid it. I am happy not seeing some of the "cooler" features in lieu of a more responsive product. Just my 2 cents.

0
Comment actions Permalink

I also have the same problem.
In my project it is just one big library (12MB .jar,
when decompiled it contains 7182 java files)
This library is under developement, and when testing
I may have to switch it even multiple times on one day.
Every time it takes a few minutes, while it takes no
time at all with IDEA 3.x

it would be nice to be able to stop the optimization
and work without it if that is possible,
or do it in background. maybe let the user choose
if it should be done immediately or in background.

another pain is, in my opinion, when I temporarily
add other source pathes (for testing).
It was very convenient in IDEA3.x to just open a
file and "add it temporarily"

0
Comment actions Permalink

Keith Lea wrote:

The text annoys me too, though, because it's really not optimizing
performance (if all it's doing is scanning source files and building the
PSI stuff for them, which I'm pretty sure is all that's happening).


I guess its "optimization developer performance for code navigation,
maintenance, and refactoring". So it is kinda.

--
Mark Derricutt <mark@talios.com> HOME: www.talios.com
Software Monkey BLOG: talios.blog-city.com
JID: talios@myjabber.net

Now Playing: Live - She

0
Comment actions Permalink

On Mon, 11 Aug 2003 17:24:28 +0000, Amit Gollapudi wrote:

Although I don't like repeating myself, I will point out again that I'm
not asking for instant gratification. I am just posting this in hopes
that the development team would take these opinions into consideration
when planning their list of things to fix before release. I never
expected the EAP builds to perform as good as official releases. Another
thing that I hoped for was a general community discussion on the topic,
which it has generated.


One of the things I don't like about the optimization is if three projects
have the same lib ( just a different copy ) they get reindexed.

What would be good is if the path wasn't taken into account, unless
needed. IDEA could say calculate a checksum for the jar in question, and
only index if another samenamed jar with a different checksum is found.

This would a) speed up indexing of multiple projects/branches, and lower
the needed diskspace ( my .IntelliJ cache is like 500mb+ at the mo!! ).

Mark

--
Mark Derricutt <mark@talios.com> HOME: www.talios.com
Software Monkey BLOG: talios.blog-city.com
JID: talios@myjabber.net

Now Playing: Stratovarius - Fantasia

0

Please sign in to leave a comment.