"Searching for version id... " extremely slow

When I try to run JUnit tests from IntelliJ, often a dialog pops up saying "Searching for version id ..." multiple times.

It's extremely slow... to the point that I have to kill IntelliJ (GUI stops repainting). I noticed if I do a refresh rebuild, it seems OK. But, we have >3500+ classes so I would like to avoid it.

It also appears more of a problem when I update my files outside of intellij (e.g. command line cvs update, for example).

Anyone experience this?

14 comments
Comment actions Permalink

Hello Justin,

When I try to run JUnit tests from IntelliJ, often a dialog pops up
saying "Searching for version id ..." multiple times.

It's extremely slow... to the point that I have to kill IntelliJ (GUI
stops repainting). I noticed if I do a refresh rebuild, it seems OK.
But, we have >3500+ classes so I would like to avoid it.

It also appears more of a problem when I update my files outside of
intellij (e.g. command line cvs update, for example).

Anyone experience this?


Known problem, it has been discussed already here. You have a public field
in your classes which tracks version ID, make the field private to fix the
problem. Search the forums for more details.

--
Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Can you send me the link to the prior discussion?

If we change the name of the field, can that help? Our field is called "versionID", would a different name be ignored by IntelliJ? What about serialVersionUID? Is that also tracked by IntelliJ?

The reason we'd like to leave the field "public" is that IntelliJ will make the upper right hand box "yellow" instead of "green" b/c the field "isn't used anywhere".

Thanks,

Justin

0
Comment actions Permalink

Also... does it impact any public static field, or just these "special" ones?

0
Comment actions Permalink

Hello Justin,

Can you send me the link to the prior discussion?


http://intellij.net/forums/thread.jsp?forum=27&thread=133136&message=3537653

If we change the name of the field, can that help? Our field is
called "versionID", would a different name be ignored by IntelliJ?
What about serialVersionUID? Is that also tracked by IntelliJ?

The reason we'd like to leave the field "public" is that IntelliJ will
make the upper right hand box "yellow" instead of "green" b/c the
field "isn't used anywhere".


Field name doesn't matter.

--
Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Hello Justin,

Also... does it impact any public static field, or just these
"special" ones?


Any. When the field value changes, IDEA tries to find dependencies for compilation.
It's not possible in such case using the bytecode and compiler caches, therefore
IDEA uses Program Structure Interface which is slower.

--
Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Many thanks for the fast response.

Ok, we'll change our versionID to private. However, doing so causes an IntelliJ warning "private field versionID is never used".

Is it possible to disable such warning in IntelliJ ?

Thanks,

Justin

0
Comment actions Permalink

Hello Justin,

Ok, we'll change our versionID to private. However, doing so causes
an IntelliJ warning "private field versionID is never used".

Is it possible to disable such warning in IntelliJ ?


You can disable this warning in Settings | Errors.

--
Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Strange that the dependencies can't be found in the compiler caches. Why does IDEA track dependency info then, javac can figure out all other depencies by itself can't it? Maybe I'm missing something?

Bas

0
Comment actions Permalink

Serge Baranov wrote:

Hello Justin,

>> Ok, we'll change our versionID to private. However, doing so causes
>> an IntelliJ warning "private field versionID is never used".
>>
>> Is it possible to disable such warning in IntelliJ ?


You can disable this warning in Settings | Errors.


Or, if you are using the EAP version (upcoming 5.0 version), you will be
able to disable a specific inspection by marking the line with a special
comment (or just invoke Alt-Enter).

--
Rob Harwood
Software Developer
JetBrains Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Hello Bas,

Strange that the dependencies can't be found in the compiler caches.
Why does IDEA track dependency info then, javac can figure out all
other depencies by itself can't it? Maybe I'm missing something?


Quote from Eugene, the developer responsible for Make:

"If make finds out that a static final field has been changed, it searches
for the usages of this field in order to
recompile all
classes where the field is used.
Our make builds dependency graph basing on the data contained in compiled
classes (for performance reasons), but in this
case we
unfortunately have to use PSI in order to find usages: static final fields
are inlined by javac and thus we cannot find any
dependencies by analysing the class file."

So, it's not possible to use compiled classes for this.

--
Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Naturally the usages can only be found from the source files and not the class files, because of inlining. But IDEA only does this for externally changed or updated source files, right? I assume all other dependency information is cached and saved between IDEA runs?

Bas

0
Comment actions Permalink

$$$MAKE QUICK EASY CASH$$ NOT A SCAM!
MAKE EASY AND QUICK CASH MONEY by doing
almost nothing (NO JOKE, NO SCAM, AND VERY
LEGAL) Please read on! You will be very
thankful you did!
A little while back, I was browsing through newsgroups,
just like you are now, and came across an article similar
to this that said you could make thousands of dollars
within weeks with only an initial investment of$6.00! So
I thought," Yeah, right, this must be a scam", but like
most of us, I was curious, so I kept reading. Anyway, it
said that you send $1.00 to each of the 6 names and
address stated in the article. You then place your own
name and address in the bottom of the list at #6, and
post the article in at least 200 newsgroups. (There are
thousands) No catch, that was it. So after thinking it
over, and talking to a few people first, I thought about
trying it. I figured what have I got to lose except 6
stamps and $6.00, right? Like most of us I was a little
sceptical and a little worried about the legal aspects of
it all. So I checked it out with the U.S. Post Office
(1-800-725-2161) and they confirmed that it is indeed
legal! Then I invested the measly $6.00. Well GUESS WHAT! I
was shocked! I figured it would end soon, but the money
just kept coming in. In my first week, I made about $25.00.
By the end of the second week I had made a total of over
$1,000.00! In the third week I had over $10,000.00 and
it's still growing. This is now my fourth week and I
have made a total of just over $42,000.00 and it's still
coming in rapidly. It's certainly worth $6.00, and 6
stamps, I have spent more than that on the lottery!! Let
me tell you how this works and most importantly, why it
works.... also, make sure you print a copy of this article
NOW, so you can get the information off of it as you need
it.
STEP 1
Get 6 separate pieces of paper and write the following on
each piece of paper "PLEASE PUT ME ON YOUR MAILING LIST"
along your name and address Now get 6 US $1.00 bills and
place ONE inside EACH of the 6 pieces of paper so the
bill will not be seen through the envelope to prevent
thievery. Next, place one paper in each of the 6 envelopes
and seal them. You should now have 6 sealed envelopes,
each with a piece of paper stating the above phrase, your
name and address, and a $1.00 bill. What you are doing is
creating a service by this. THIS IS ABSOLUTELY LEGAL This
program remains successful because of the honesty and
integrity of the participants. Please continue its success
by carefully adhering to the instructions. You will now
become part of the Mail Order business. Your product is
simply a service of helping develop mail lists. Mail the
6 envelopes to the following addresses:

#1]
J. Willard
2845 Rockford Rd
Boonville, NC 27011

#2]
D. Wiggins
4517 Runnymeade rd
owings mills, MD 21117

#3]
Markarabee Fields
1580 Belleville Rd
Orangeburg, SC 29115

#4]
S. Gibbon
P.O. BOX 2454
BUNDABERG Q 4670 AUSTRALIA

#5]
Via David
8924 Crimson Ridge Way
Roseville, CA 95747
USA

#6]
Ed Passmore
Willow Farm
Thwaite
Eye
Suffolk
IP23 7ED
England

STEP 2
Now take the #1 name and address off the list that
you see above, move the other names up (6 becomes
5, 5 becomes 4, etc...) and add YOUR Name and
address as number 6 on the list.
STEP 3
Change anything you need to, but try to keep this
article as close to original as possible. Now, post
your amended article to at least 200 newsgroups.
(I think there are close to 24,000 groups) All you
need is 200, but remember, the more you post, the
more money you make!
-DIRECTIONSHOW TO POST TO NEWSGROUPS----



Step 1
You do not need to re-type this entire letter to
do your own posting. Simply put your cursor at the
beginning of this letter and drag your cursor to
the bottom of this document, and select 'copy' from
the edit menu. This will copy the entire letter into
the computers memory.
Step 2
Open a blank 'notepad' file and place your cursor at
the top of the blank page. From the 'edit' menu
select 'paste'. This will paste a copy of the letter
into notepad so that you can add your name to the
list.
Step 3
Save your new notepad file as a .txt file. If you
want to do your postings in different sittings,
you'll always have this file to go back to.
Step 4
Use Netscape or Internet explorer and try
searching for various newsgroups (on-line forums,
message boards, chat sites, discussions.)
Step 5
Visit these message boards and post this
article as a new message by highlighting the text
of this letter and selecting paste from the edit
menu. Fill in the Subject, this will be the header
that everyone sees as they scroll through the list
of postings in a particular group, click the post
message button. You're done with your first one!
Congratulations...THAT'S IT! All you have to do is
jump to different newsgroups and post away, after
you get the hang of it, it will take about 30
seconds for each newsgroup! **REMEMBER, THE MORE
NEWSGROUPS YOU POST IN, THE MORE MONEY YOU WILL
MAKE!! BUT YOU HAVE TO POST A MINIMUM OF 200**
That's it You will begin receiving money from
around the world within days! You may eventually
want to rent a P.O. Box due to the large amount
of mail you will receive. If you wish to stay
anonymous, you can invent a name to use, as long
as the postman will deliver it. **JUST MAKE SURE ALL
THE ADDRESSES ARE CORRECT.**
-


NOW THE WHY PART-------
Out of 200 postings, say I receive only 5 replies
(a very low example). So then I made $5.00 with
my name and address at #6 on the letter. Now, each
of the 5 persons who just sent me $1.00 make the
MINIMUM 200 postings, each with my name and address
at #5 and only 5 persons respond to each of the
original 5, that is another $25.00 for me, now those
25 each make 200 MINIMUM posts with my name and
address at #4 and only 5 replies each, I will bring
in an additional $125.00! Now, those 125 persons
turn around and post the MINIMUM 200 with my name
and address at #3 and only receive 5 replies each,
I will make an additional $626.00! OK, now here is
the fun part, each of those 625 persons post a
MINIMUM 200 letters with my name and address at #2
and they each only receive 5 replies, that just made
me $3,125.00!!! Those 3,125 persons will all deliver
this message to 200 newsgroups with my name and
address at #1 and if still 5 persons per 200
newsgroups react I will receive $15,625,00! With an
original investment of only $6.00! AMAZING! When
your name is no longer on the list, you just
take the latest posting in the newsgroups, and send
out another $6.00 to names on the list, putting your
name at number 6 again. And start posting again. The
thing to remember is, do you realize that thousands
of people all over the world are joining the
internet and reading these articles everyday, JUST
LIKE YOU are now!! So can you afford $6.00 and see
if it really works?? I think so... People have said,
"what if the plan is played out and no one sends you
the money? So what What are the chances of that
happening when there are tons of new honest users
and new honest people who are joining the internet
and newsgroups everyday and are willing to give it a
try? Estimates are at 20,000 to 50,000 new users,
every day, with thousands of those joining the
actual internet. Remember, play FAIRLY and HONESTLY
and this will work.
ALSO REMEMBER: SEND YOUR $1 OUT TO EVERYONE ON THE
LIST, EVEN IF THEY ARE NOT FROM YOUR COUNTRY.
WHAT ARE YOU WAITING FOR???
GOOD LUCK!!
Go to google.com and search for MAKE MONEY FAST AND EASY$$ and
you will find alot of message boards
MAKE MONEY FAST AND EASY$$

0
Comment actions Permalink

Hi,

We have looked at the IntelliJ special comment to disable the warning on a single line of code. We don't want to use this as it will pollute our code/comments with IntelliJ-specific keywords, etc.

We have this issue primarily because we include a public static final string that is set to the CVS check-in version. However, we're in a bind... using public means complies can take a long time, and using private causes warnings (which can only be turned off either globally or via a non-standard comment).

Is it possible for IntelliJ to add a feature to cause the compiler to not bother inlining certain public static final fields? Or for IntelliJ to allow a certain warning to be turned off, globally, for a particular variable name only?

Thanks,

Justin

0
Comment actions Permalink

Hi,

I haven't heard anything from IntelliJ team on this... any thoughts?

Thanks,

Justin

0

Please sign in to leave a comment.