GoingNative 29: Massive Improvements for Browsing in Large Codebases!

Play GoingNative 29: Massive Improvements for Browsing in Large Codebases!
Sign in to queue


Some of you out there, especially those of you who frequently work with large codebases, might have seen this prompt at times while performing a basic browsing operation like Go To Definition or Find All References:

Generic Episode Image

This prompt blocks you from performing those operations, sometimes for more than 5 minutes!

Well, with today's release of Visual Studio 2013 Update 4 CTP 1 (clicky clicky!) you can enjoy huge improvements to this workflow! Join today's [implicit] quartet of Visual C++ folks as we finally reveal the secret behind this super-annoying prompt that blocks you from doing basic browsing operations. We'll show you not only what we did, but also how we went about making these improvements. Use the tips for your own projects; improve away!

Click here to download Visual Studio 2013 Update 4 CTP 1 for the solution scanning improvements!
Check back here for a future "Update 4 update" with the final unblocking touches!



Download this episode

The Discussion

  • User profile image
    Ricardo Costa

    Nice improvement! Have you also tried changing the std::map structure to std::unordered_map? It's free to replace one with another and it usually provides great performance improvements to the find operation as it uses a hash table instead of a tree.

  • User profile image

    Just a funny little note but instead of doing loops in comparison you could do std::lexicographical_compare with reverse iterators.

  • User profile image

    The popping yellow bar is going to be very annoying because it moves the text in the editor down and then up again when it disappears. Work it out e.g. by moving the bar to the bottom of the editor or by positioning it over the editor window and it's going to be very useful update. After this I might even consider to use VS without buying Visual Assist first.

  • User profile image
    Vytautas Leonavius


    Thanks for the suggestion. We actually experimented with std::unordered_map vs std::map for this scenario. However, we did not found consistent or significant improvement across various solutions we tried. The difference was within measurement noise, so we decided to stay with std::map.

    Vytautas/Visual C++ IDE

  • User profile image

    Why even use a string as the key for the map?
    CRC32 of the path is what I would use.
    Also, there are much better maps than std::map, see the judy array or google sparse hash.

Add Your 2 Cents