VC++ Performance Improvements in VS 2008


A couple of weeks ago I blogged about the performance improvements in Visual Studio 2008. 


 


In response to that, several of you asked me for more information on how these types of enhancements had been incorporated into Visual C++. 


 


Though the performance improvements blog highlighted work the Visual C++ team had done around file-level parallel builds and incremental builds for mixed native-managed projects, there are other things in for VC++ in VS 2008 that I thought would be worth mentioning.  So, here we go: 


 


·         Editor responsiveness – Updating IntelliSense, displaying the QuickInfo tooltip and processing AutoComplete requests won’t degrade editor experience.


·         Goto Definition improvements – Significant reduction in the time required to “Goto Definition”.  One customer reported that a 2 minute delay dropped to 10-20 seconds.


·         Load solution performance – Load time of large Visual C++ solutions is much better.  Some customers are reporting speed ups of 25%-70%.


·         File lookup in projects – Provides improvements to several scenarios such as adding files to projects, changing configurations, etc.


·         Changing configuration options – Modifying options, such as adding an include directory or changing the active configuration, are much faster for large solutions.


·         Reduced CPU consumption – We now process low-priority background items (such as IntelliSense population) using 20% less CPU time.


 


I do hope that all this work will provide a much enhanced IDE experience for C++ developers.  The Visual C++ team is already hard at work on the next major version of Visual C++ and is hoping to address even more performance and scalability issues in the future.  Also, for those of you working on Visual C++ 2005, the team will be releasing a patch that applies the fixes described above to that version as well.


 


Namaste!

Comments (23)

  1. Soma just blogged about some of the performance improvements we’re making in Visual C++ 2008 . We’ll

  2. Soma just blogged about some of the performance improvements we're making in Visual C++ 2008 . We'll

  3. Somasegar’s WebLog has a entry on VC++ Performance Improvements in VS 2008 . A couple of days ago he

  4. Somasegar, jefe en Microsoft Corp. de muchos de los avances de la plataforma .NET, ha realizado unos

  5. [原文地址]: VC++ Performance Improvements in VS 2008 [原文发表时间]: Wednesday, October 10, 2007 5:59 PM 几个星期前

  6. Brian Porter says:

    In general, it all sounds good.

    However, VC++ 2005 is seriously lacking in standard compliance. Can I expect any serious improvements? Specifically:

    1) Two-phase name lookup

    2) Exception specifications

    3))Export *

    * While many may not like it, it is part of the standard.

  7. Fei says:

    I’m using VS2008 beta2. I found that if I double click on a lNK2001 or C1083 error message in the output window, VS hangs for a while before it finds the file.

    Steps to reproduce:

  8. It is time for another weekly roundup of news that focuses on .NET, agile and general development related

  9. Tarek Madkour [MS] says:

    Fei,

    > if I double click on a lNK2001 or C1083 error

    > message in the output window, VS hangs for

    > a while before it finds the file.

    Yes, Linker errors which are not linked to a specific file in the project could exhibit this behavior while the IDE tries to find the file (that does not exist) in your project. I can imagine that this could take a long time if you have large solutions. It’s not something that we fixed in VS2008, unfortunately. Thanks for bringing it to our attention.

    I’m not sure why you should be getting this for C1083 if it’s related to an existing source file, though. Perhaps this was about a compiler-generated file? If so, we would definitely be interested in the "steps to reproduce" that you missed above.

    Thanks,

    Tarek Madkour

    Lead Program Manager

    Microsoft Visual C++

  10. Bob says:

    Any information on speed improvements in generated code would be helpful.

  11. Larry says:

    Microsoft has too many disasters on his hands to be worried about fixing exception handling and export, both of which are broken in the standard itself. If these features were simple and reliable to implement, were in widespread use or even remotely useful then it would be worthwhile. However, none are the case.

  12. Alexei Lebedev says:

    >>One customer reported that a 2 minute delay dropped to 10-20 seconds.

    Here is what I’m wondering. Let’s say there are a million symbols in the database. Let’s assume the database is in a binary tree, and every node requires one disk access. This means there will be 20 reads, at 10 milliseconds each. Worst case scenario: 200 milliseconds. Hard to do worse than that, theoretically at least. Now, how can you guys possibly spend 10-20 seconds looking ANYTHING up? Please tell us. I really, honestly, truly don’t understand how a lookup could take this long.

  13. Bz says:

    I’m very happy with your promise that the performance improvements will be rolled into 2005.  It makes it easier to justify buying 2008 knowing that I’m buying it for features not for bug fixes.  Thanks.

  14. Bob says:

    Can you provide any speed of code execution tests and/or executable file size of VS 2008 versus VS 2005?

    We have lots of c++ code that would greatly benefit from even a 5% code execution speedup.

  15. 2knarf says:

    Bob: Do some code profiling and possibly learn some assembly language.  You can often get much more than 5% speedup in sections of code if you see what kind of code the compiler is generating, and "assist" it yourself (ie: loop invariant code hoisting, etc.).

    I saw _NO_ performance difference in our large (700k+ lines) app between the 2005 & 2008 release builds.  But you also can look into things like PGO and LTCG to speed up your executables.

    Oh, and don’t forget that multi-core is going mainstream, so you may be able to get some help there too.

  16. Here’s a roundup of some links to great blogs and articles about the new stuff coming soon in "Orcas".

  17. Timur says:

    VC++ in VS 2008 hangs. It is extremely harmful in case files were not saved properly. I’m working with boost and VS 2008. I also observed hangs on VS 2005 after patching. 🙁

  18. David Berg [MSFT] says:

    Timur,

    Can you please send some detailed information about the hangs you’re seeing to devperf@Microsoft.com, or post a connect bug with details so that we can reproduce and track the issue?

    Thanks,

    David Berg

    Developer Division Performance Engineering Team

  19. Patrick says:

    I also really wonder about the 10-20 seconds to look something up.

    It’s like spending 1 million years to look up a person’s phone number in a 2 page phone-book.

    It’s absolutely mind-boggling…

    Patrick

  20. David Berg says:

    Patrick,

    I’m not sure where you’re seeing 10-20 seconds to look something up, feel free to clarify it with me (DevPerf@Microsoft.com).

    We do know we have room for improvement with Help and Intellisense, and we’re actively working to see what we can do about it in Visual Studio 2010.

    Regards,

    David Berg

    Performance Engineering

  21. [Nacsa Sándor, 2009. január 20. – február 12.] Komplett fejlesztő környezet Windows kliens és web alkalmazások