Sign in to follow this  
devronious

VS2008? to upgrade or not to upgrade?

Recommended Posts

I have VS2005. I have not yet upgraded to VS2008. I have the basic version. I will be creating DX10 mdx games via the SlimDX library. I just upgraded to Vista Ultimate x64. Is there any good reason for me to upgrade to VS2008 that anyone can think of? This has probably been asked before but I could use some last minute advice before forking out the cash to make up my mind. Thanks, Devin

Share this post


Link to post
Share on other sites
One advantage that VS 2008 has over VS 2005 is that it has everything you need to run windows programs built into it. With VS 2005, you have to go through and set up the Platform SDK to do this, but you don't have to do that with VS 2008. Also, 2008 probably has new features, which should be on the product page.

I don't know if this is quite the answer you were looking for, but it is definitely an advantage for VS 2008.

Share this post


Link to post
Share on other sites
Yes, and for native C++, VS2008 has some nice features I really like :
- improved debugger support for threads
- better debugger visualizers (for example, for enum flags you see the enum combination, not the integer value)
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced

Add to this a really easy update of the project files, so I'd say yes, upgrade.

Share this post


Link to post
Share on other sites
I'm not upgrading. I have Visual Studio 2005 Standard and I would have to upgrade to 2008 Express.

Currently 2005 is the most widely supported (Boost/XNA come to mind) and I'm glad it's starting to replace the VC6 project files in open source projects.

Share this post


Link to post
Share on other sites
Well I'm running VS 2005 with VS 2008 currently since there is no official support for XNA, perforce plug-in,C++ code snippets in VS2008 currently or any number or 3rd party add-in's etc. At least the latest DX SDK finally support it.

If you are a C# programmer and thinking of using the new C# 3.0 stuff it's a no brainer since that's the only way to get the new stuff like Linq.
The only other really compelling reason I can see is for the .NET Framework Library Source Code access which is VS 2008 only.
Otherwise, if you know your 3rd party plug-ins work in VS2008 or aren't an XNA user it's probably worth it to upgrade since there are a ton of bug fixes and performance improvements compared to VS2005 especially if you use VB.

Some of the more prominent performance improvements in Visual Studio 2008 that we see include:

· Rebuilding a Visual Basic project and running a background compiler is 3x faster and uses 3x less memory. More about this topic here.

· Scrolling large C# files in the Editor is 100% faster, while typing in new text is 50% faster

· The response time of IntelliSense with large types in C# is up to 10 times faster

· Incremental build time runs up to 90% faster on C++/CLI project solutions. More about this topic here.

· Office Word and Excel files are processed 20x faster on the server

· TFS Version Control command processing was re-written to support unlimited sized operations on key commands without being memory bound on the server. In our measurements, key Commands also run 10% - 60% faster, with the larger improvements associated with bigger projects. More about the work to improve TFS scalability here and here.



We also focused on performance improvements that exploit multi-core hardware. As I blogged about earlier, we added multi-threaded support to MSBuild. In addition, using the /MP switch, you can significantly improve your C++ project build time – internally we’ve seen improvements of up to 30% when building the C++ Frontend compiler on dual-core hardware. Significant performance improvements were also made in the .NET Framework 3.5 runtime to streamline the CLR thread pool to help multithreaded applications of all kinds. These architectural changes, when combined with socket API changes, improve asynchronous socket I/O throughput up to 70% when a 2nd processor core is available, for example. The full scope of this work is discussed in more detail here.



[Edited by - daviangel on March 22, 2008 2:11:00 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by rolkA
Yes, and for native C++, VS2008 has some nice features I really like :
...
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced

Doesn't seem to work for me. The switch doesn't do anything. Is it not avaliable in the Express edition? :(

Share this post


Link to post
Share on other sites
Cool, thanks for the info. Still trying to decide. I'm kinda tossed. I just don't know If I'm seeing the price in there for what I'll be doing? Darn this is so confusing.

Share this post


Link to post
Share on other sites
Quote:
Original post by shurcool
Quote:
Original post by rolkA
Yes, and for native C++, VS2008 has some nice features I really like :
...
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced

Doesn't seem to work for me. The switch doesn't do anything. Is it not avaliable in the Express edition? :(

I don't know, I don't think so. If you build a projet with this switch, this should launch two instances of cl.exe (four on a quad core), and it will compile sevral .cpp files at a time (but it's multithreaded project-wise, not "compilation-unit"-wise, so you need to have several .cpp files in the same project).
Oh and it works only for C++ projects.

devronious, if you are not using the DotNet framework, you don't have to upgrade, but if you are using express editions (=> free), there is no reason to stick with VS2005 ;)

Share this post


Link to post
Share on other sites
I'm using Visual Studio Standard 2005 and my language is C#. I'm heavy into DotNet. My whole graphics engine is c# with some unsafe pointer areas for speed. Trying to make a really fast managed engine. Eventually I'll make it work as an internet engine for MMORPG types. I'll need the DotNet since it's just me making the engine at the moment and speed of programming is of the essence.

Quote:
Oh and it works only for C++ projects.


I just upgraded to a quad core but I guess the parallel compile only works with c++, per rolkA?

Share this post


Link to post
Share on other sites
Quote:
Original post by rolkA
Quote:
Original post by shurcool
Quote:
Original post by rolkA
Yes, and for native C++, VS2008 has some nice features I really like :
...
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced

Doesn't seem to work for me. The switch doesn't do anything. Is it not avaliable in the Express edition? :(

I don't know, I don't think so. If you build a projet with this switch, this should launch two instances of cl.exe (four on a quad core), and it will compile sevral .cpp files at a time (but it's multithreaded project-wise, not "compilation-unit"-wise, so you need to have several .cpp files in the same project).

Actually, it works across both translation units and projects. I've been using this to great effect to greatly reduce my compile time: VS compiles two translation units at a time on my dual core machine.

Share this post


Link to post
Share on other sites
Quote:
Original post by rolkA
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced
/MP switch also works for Visual Studio 2005 although it is not documented. This is true also in Express Editions.

Share this post


Link to post
Share on other sites
Quote:
Original post by bubu LV
Quote:
Original post by rolkA
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced
/MP switch also works for Visual Studio 2005 although it is not documented. This is true also in Express Editions.

No, it doesn't work in VC++ 2008 Express edition. I've tried /MP, /MP4 and it has no effect on the compilation of my project with tons of .cpp files. It always uses one of my four cores, prepending output with '1>' which I assume means it uses 1st core. I'm not seeing '2>', '3>', etc. and the CPU utilization is 25% (on a Core 2 Quad).

Share this post


Link to post
Share on other sites
Number before > means project number the studio is currently compiling. It will be diffent from 1 only when you will have multiple projects in one solution.

Yes, that is true that CPU utilization for cl.exe stays 25% for Quad core. But look carefully in Task Manger - you will see that you have 5 cl.exe's running (cpu count + 1) if you have added /MP switch correctly.

At least this is what I see when I am compiling on my Core Duo (2 cores) with /MP switch:

http://aycu06.webshots.com/image/49685/2006288981281631030_rs.jpg

I can post screenshot also with VS2005EE, if you want :)

Using /MP on Dual Core decreases compile time about 2x for my projects. At work I have Quad Core and there compile time is reduced 4 times. It really helps to compile projects faster!

[Edited by - bubu LV on March 25, 2008 3:33:21 PM]

Share this post


Link to post
Share on other sites
Quote:
Original post by devronious
Cool, thanks for the info. Still trying to decide. I'm kinda tossed. I just don't know If I'm seeing the price in there for what I'll be doing? Darn this is so confusing.


It's not really a big deal either way. The differences are minor, but they won't hurt you. If you're in C++-land, there's no urgent need to upgrade, but if you come across a cheap version of 2k8, you might as well upgrade.
For .NET people, yes, you want to upgrade. [grin]

Share this post


Link to post
Share on other sites
Quote:
Original post by bubu LV
Quote:
Original post by rolkA
- /MP switch for multithreaded compilations, on a Quad Core the build time is greatly reduced
/MP switch also works for Visual Studio 2005 although it is not documented. This is true also in Express Editions.


As far as I know, it only works across projects in 2k5. That is, two projects will be compiled in parallel, but not compilation units in the same project. The latter is a 2k8 feature.

Share this post


Link to post
Share on other sites
Spoonbender:
Oh, come on, why would I lie? :)
I'm using this feature already for some time.
Here, take a look at this screenshot which I took some seconds ago:

http://aycu26.webshots.com/image/48865/2004986809810014451_rs.jpg

It's Visual C++ 2005 Express Edition. I assure you that this also works with VS 2005 Professional edition.

Share this post


Link to post
Share on other sites
2008 largely makes 2005 redundant for .NET developers, as 2008 is a multi-version .NET IDE. Previously, you had one version of Visual Studio per .NET version - Visual Studio .NET to .NET 1.0, VS .NET 2003 to .NET 1.1, VS 2005 to .NET 2.0... VS 2008 supports .NET 2.0, 3.0 and 3.5 out of the box, has support for JavaScript debugging and other niceties for ASP.NET developers.

However.

If you are in active development on a project, do not upgrade. Wait until your project is completed, then upgrade - or install both IDEs side by side and continue using the old one for your current project.

Share this post


Link to post
Share on other sites
Quote:
Original post by bubu LV
Number before > means project number the studio is currently compiling. It will be diffent from 1 only when you will have multiple projects in one solution.

Yes, that is true that CPU utilization for cl.exe stays 25% for Quad core. But look carefully in Task Manger - you will see that you have 5 cl.exe's running (cpu count + 1) if you have added /MP switch correctly.

At least this is what I see when I am compiling on my Core Duo (2 cores) with /MP switch:

http://aycu06.webshots.com/image/49685/2006288981281631030_rs.jpg

I can post screenshot also with VS2005EE, if you want :)

Using /MP on Dual Core decreases compile time about 2x for my projects. At work I have Quad Core and there compile time is reduced 4 times. It really helps to compile projects faster!

Correction, it doesn't work under Debug mode. But under Release it works great, and compiles 4x faster on my quad with 100% cpu utilization across all four cores.

Any idea why it won't work for Debug releases? It only spawns 1 cl.exe. And I'm sure I had the /MP flag there in both cases.

Anyway, thanks for the screenshot, although it's mostly useless to me as I most often compile under Debug settings.

Edit: Oops, I just noticed this in the output when compiling under Debug mode:

Command line warning D9030 : '/Gm' is incompatible with multiprocessing; ignoring /MP switch

Now I have my answer! Thanks.

Share this post


Link to post
Share on other sites
Quote:
Original post by Oluseyi
2008 largely makes 2005 redundant for .NET developers, as 2008 is a multi-version .NET IDE. Previously, you had one version of Visual Studio per .NET version - Visual Studio .NET to .NET 1.0, VS .NET 2003 to .NET 1.1, VS 2005 to .NET 2.0... VS 2008 supports .NET 2.0, 3.0 and 3.5 out of the box, has support for javascript debugging and other niceties for ASP.NET developers.

However.

If you are in active development on a project, do not upgrade. Wait until your project is completed, then upgrade - or install both IDEs side by side and continue using the old one for your current project.

Ditto.

Never upgrade technologies mid-cycle unless it is absolutely required.

Between cycles, though, it is generally good to move to the latest revision of all software you use.

Assuming you aren't in the middle of something big, there are very few compelling reasons NOT to move over to VS2008. About the biggest reason is project file compatibility. If that's your only concern there are lots of tools out there which take care of that for you, or you can do it yourself if you are comfortable with xml.

Share this post


Link to post
Share on other sites
Cool, thanks for the help. One question? Is the /MP switch automatically used or do I have to manually add it? For 2005 and/or 2008?

Share this post


Link to post
Share on other sites
Quote:
Original post by devronious
Cool, thanks for the help. One question? Is the /MP switch automatically used or do I have to manually add it? For 2005 and/or 2008?


Gotta add it for 2005 (since it's an unsupported feature, it probably isn't on by default;)).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this