How big is too big?



  • I just started a new job recently. The project I am working on is a large-scale ASP.NET website for a client.

    They have the entire project packed into one giant solution. Number of VS projects contained = exactly 100.

    Building the entire solution takes about ten minutes on my local development machine. Compiling the "Error List" in VS 2008 takes about another 5 minutes. I usually go for a walk while it builds.

    This is just my personal nemesis among a large list of WTFs with this project.

    I have never seen anything like this. In something of this scale I would think it would be better to break out your projects into separate solutions.

     I am just curious how common this sort of thing is. 



  • Ten minute build times are not that out of line.

    However, there is a wide range of build times in my line of work. At one end of the extreme I've got a nice embedded application (somewhere between 100k and 200k lines of code) that takes about 60 seconds to compile and another minute to build the metadata files needed by some of our tools.

    At the other extreme we have application that has over 8MB of source "code" and takes a good 20 minutes.  But I blame that one fully on Matlab/Simulink/RTW, not the complexity of the code.

    (That's not the worst either  - before optimizations that 20 minutes was closer to 60.  And I still maintain a legacy application that takes a good 14 minutes to compile, but it's on an old rickety mid-90's era Sun machine.)



  • I have a solution with about 36 projects with about 250k lines of code and it takes about 3 minutes to compile on my laptop (Dual Core, 4Gb ram).  At one time I did split it into three solutions (shared assemblies, backed services, and client).  The problem was that if I was working on implementing a new feature that crossed all tiers, I would need to add the code in the shared assemblies, then implement the backend service part and then update the client.  I guess tiering out the solution makes sense if you have a large development team with groups working on only one part.  But in my case, it is just me and another dev; so we abandoned the three solutions in favor of just one.  

    Large solutions just make the case for having good hardware for devs.  If I compile the same solution on my workstation (Quad core i7, 8Gb of ram with dual sata drives), it takes 1.5 minutes.  I'm sure I could eek out more performance if I stripe the drives or utilize a firewire/esata drive array like those at www.g-technology.com.




  • Wow, I guess 1-2 seconds on a single core Athlon64 with 2Gb of RAM is somewhat exceptional for a fully functional OpenGL game engine.


  • Discourse touched me in a no-no place

    @jpaull said:

    Building the entire solution takes about ten minutes on my local development machine. Compiling the "Error List" in VS 2008 takes about another 5 minutes. I usually go for a walk while it builds.
    [...]
    I am just curious how common this sort of thing is.
    Cross compiling an embedded OS+apps; about 2 hours from scratch.



  • Not exactly to the point, but with Visual Studio, you can have multiple solutions working on the same codebase. I used to create special-purpose solutions to build just the projects I was interested in.


  • Garbage Person

    @RaspenJho said:

    Not exactly to the point, but with Visual Studio, you can have multiple solutions working on the same codebase. I used to create special-purpose solutions to build just the projects I was interested in.
    Configurations do the same thing. Of course it's always "tragic" when you "forget" to change your active configuration and wind up building all the MSIs for IA64, which takes 45 minutes and gives you a product that nobody will ever use anyway.



  • Configurations don't keep your solution from loading the 80 OTHER projects you aren't interested in though.



  • How much of that solution is actually necessary for the project you're working on?

    As they add additional customer web sites are they continually adding additional projects to the same solution?  I wouldn't like that. I'd prefer to work on more targetted solutions, personally.  Having everything as part of one giant solution could cause problems, especially if someone performed a global search and replace.

    But, as i don't know what all is involved in your specific giant solution, it might be the right way to go.


Log in to reply