I recently started working on a large project.
It consists of 20,000 files with 9,000 .java files. The rest are .c, .cxx, .h., images and
stuff. (This is large for me, since I never worked on a java project with so many source files)
Coming from Eclipse background (I have been using eclipse since v2.0), I was glad that v3.0 was
in time for this large project. However, I find that Eclipse does not behave very well with so
many files. These are a few problems I have been having:

  • Search takes forever.
  • Sometimes code completion does not provide the right values. (Eg. Typing “string”.index ctrl-space would not offer me any choices.)
  • Rename refactoring renames methods with the same name, but in a different context.
    E.g.
    Lets say I have code like this

    class A {
      public void doSomething() {
        System.err.println("Doinging some work in A");
      }
    }
    
    class B {
      public void doSomething() {
        System.err.println("Doinging some work in B");
      }
    }
    
    class C {
      public C() {
        A a = new A();
        B b = new B();
        a.doSomething();
        b.doSomething();
      }
    }

    Now if I refactor doSomething() in B to doSomething1(), the doSomething() in A also gets renamed.

  • Often my syntax errors are not flagged. I have a habit of writing code like this.

    someObject.thisMethodDoesNotExist();

    and then doing ctrl-1 to let Eclipse create the method for me. However, when the error does not get flagged, I do not get the option to create the method in quick fix.

  • Every 2-3 hours, Eclipse slows to a crawl. I, then, have to restart Eclipse. I am glad the startup time is minimal.

Funny thing is that I see none of these problems when I run on a smaller project at home.

So last week, I started exploring IDEA. I have worked with IDEA before. (Some XP guys I worked with liked IDEA)

The biggest problem I saw was initial startup time. It takes ages to parse the files at startup and there is no way to cancel it.

A good UI always provides a nice way to cancel a long running operation. Not that IDEA doesn’t have good UI. I think it is one of the best out there.
Most functions are more intuitive than in Eclipse and CVS integration is really cool.

So this week, I intend to continue using IDEA and see how well it performs with this large project.
If you have any good tips for working with large projects in either Eclipse or IDEA, please use the comments link below to let me know.

Comments:

Interesting post !
9000 … that is about 50% more Java files than in my workspace, however I have managed to run Eclipse even for a few days in a row without ‘slowing down to a crawl’.
Especially when you have a lot of interdependent modules (and I sincerely hope you do, at 20Kfiles 😉 ) try to keep open at a time only the modules you’re working with.
Avoid searching in the whole workspace. Searching in the current modules answers 90% of my needs and is usually quite fast (when it isn’t, you can always put the search in background and continue the stuff you’ve been doing).
Renaming bug … looks like a bug !
Syntax error markers are sometimes interdependent. If you have another syntax issue before the one you’re trying to quickfix, there is a chance ctrl-F1 will not work.
Concerning the long running tasks : yes, I love Eclipse ” for its features : you may put into background, cancel and see detailed progression of long running tasks. Sometimes I am abusing a little, launching a CVS update over a low bandwidth line, enqueueing a full rebuild and meanwhile I continue to write code. No wonder I managed and not only once ! to deadlock Eclipse (and as soon as I can reproduce this, it’ll be in the Eclipse bugzilla).
I start Eclipse with parameters “-vmargs -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=10M -XX:NewSize=10M -Xmx90m -Xms32m” on my 512M laptop and with “-vmargs -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=10M -XX:NewSize=10M -Xmx200m -Xms40m” on my 1G home system.
Adrian
# posted by Anonymous : 7/18/2004 11:46:43 PM

>” Now if I refactor doSomething() in B to doSomething1(), the doSomething() in A also gets renamed.”

Add a bug report:
https://bugs.eclipse.org/bugs/enter_bug.cgi
# posted by Anonymous : 7/19/2004 08:10:50 AM

I generally keep 2-3 modules open. Since I am new to the project, I often need to look at files in other modules and do need to search across modules.
Hopefully, once I start concentrating on one section of the project, this subset of files I work on will be reduced significantly.
And yes, pushing long running tasks to the background is a great feature.
# posted by Lokesh : 7/19/2004 09:31:13 AM

i had the same issue, I tried to compile Azureus code (which is not enormous , but i can say big). in IDEA after the initial loading of the project, just worked almost same as any other project i had. But eclipse slowed down badly, especially when there are too much mistakes because of the project configuration problems. Even after fixin the issues, the editor was not as responsible as IDEA and source help was slower. I did not try it with the 3.0 final versio though. (it was a 3.0Msomething)
But, in any of the case, use a decent computer with at least 750MB memory , a good graphic card and speedy HDD.
# posted by Anonymous : 7/19/2004 04:21:51 PM

The first time you load a project in Idea it will take a long time because it is generating local caches and indices. It should load faster on subsequent usages.

I use Idea 4.0 on a project with about 4600 .java files and startup time isn’t terrible, however since our build system isn’t yet converted to Ant I have to build “outside” of Idea. This means that when I come back into Idea it has to “resync” and this can sometimes take a minute or two. Hopefully they will fix this at some point because it’s quite annoying (especially since it basically “locks up” the Idea window and pegs the CPU)
# posted by Anonymous : 7/20/2004 12:11:04 PM

Big projects require big machines. I mean to have a more responsive and faster development environment for such a project you need something beyond a regular desktop PC. You need a workstation equiped with Ultra SCSI hard drives in a RAID configuration, two processors, and…

At least such a machine is necessary for now, that Eclipse and IDEA are not as fast as we like them to be on our machines.
# posted by Anonymous : 7/29/2004 01:28:02 PM

I like that idea. Wish my manager was like you. 🙂
# posted by Lokesh : 7/30/2004 09:15:58 AM

Advertisements