1 / 40

What’s New in Visual Studio 2013 for C++ Developers

What’s New in Visual Studio 2013 for C++ Developers. Tarek Madkour Group Program Manager – Visual C++ 2-305. performance. compatibility. portability. Agenda. 0. Windows 8.1 Tools 4. Productivity. 1. Performance 2. Compatibility 3. Portability. Agenda. 0. Windows 8.1 Tools

marlin
Download Presentation

What’s New in Visual Studio 2013 for C++ Developers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What’s New in Visual Studio 2013 for C++ Developers Tarek Madkour Group Program Manager – Visual C++ 2-305

  2. performance compatibility portability

  3. Agenda 0. Windows 8.1 Tools 4. Productivity • 1. Performance • 2. Compatibility • 3. Portability

  4. Agenda • 0. Windows 8.1 Tools • 1. Performance • 2. Compatibility • 3. Portability • 4. Productivity

  5. Connected Windows Store Apps • Visual Studio 2013 makes it easier to: • Update your app tile using mobile services • Send push notifications to your Windows Store app • Accessing Azure mobile services backend capabilities • How? • New C++ library for Azure mobile services • Integrated VS tools

  6. Better XAML Designer • New and updated templates • Improved XAML editor • Rulers and dynamic guides • New Windows 8.1 controls • Improved Designer performance • Better in-place style and template editing

  7. Powerful Graphics Debugging • VS2012 introduced DirectX-based Graphics debugging tools in VS Professional, Premium and Ultimate • VS2013 adds: • Support in VS Express • Capturing frames fromremote machines • Compute shaderdebugging • Faster frame capture

  8. Deeper Diagnostics • Diagnostics hub • XAML UI responsiveness profiling • Energy profiler • CPU profiling • Better WinRT Exception debugging • ‘Just My Code’ debugging • Improved Async debugging • JavaScript/C++ interop debugging • C#/C++ interop debugging * • ARM dump debugging *

  9. C++/CX • Boxed types in WinRTstructs • valuestructPerson { • IBox<int>^ Age; • } • Overriding ToString() • refstructPerson { • public: • String^ Name; • virtualString^ ToString() override • { return Name; } • } • Improved WinRTexceptions • Retains stack trace and message string across the ABI • Developers can specify custom message strings • Faster performance • Ref classes instantiate faster, have more compact layouts in memory • Boxing and factory caching improved to speed up XAML scenarios • Facilitated inlining and other code optimizations

  10. Windows 8.1 Tools demo

  11. Agenda • 0. Windows 8.1 Tools • 1. Performance • 2. Compatibility • 3. Portability • 4. Productivity

  12. Performance Optimizations Recap • Compilation Unit Optimizations • /O2 and friends • Whole Program Optimizations • /GL and /LTCG .obj .cpp .obj .cpp .exe .exe .obj .cpp .obj .cpp Profile-Guided Optimizations /LTCG:PGI and /LTCG:PGO Run Training Scenarios .obj .cpp .exe .exe .obj .cpp

  13. Automatic Vectorization • VS 2012: • Uses “vector” instructions where possible in loops • VS 2013 adds: • Statement level vectorization • Permutation of perfect loop nests • Range propagation optimizations • Support for more operations: min/max, converts, shifts, byteswap, averaging • Reductions into array elements • __restrict support for vector alias checking • Improvements to data dependence analysis • C++ pointer vectorization • Gather / scatter optimizations for (i = 0; i < 1000; i++) { A[i] = B[i] + C[i]; } VECTOR (N operations) SCALAR (1 operation) v2 v1 r2 r1 + + v3 r3 vector length add r3, r1, r2 vadd v3, v1, v2

  14. Automatic Vectorization // STL – pointers everywhere; not even a loop counter variable void transform1(constint * first1, constint * last1, constint * first2, int * result) { while(first1 != last1) { //converted to integer *result++ = *first1++ + *first2++; // make these array references } } // DirectX – no loops here! Vectorize operations on adjacent memory cells voidfour_vector_example(XMVECTOR V) { XMVECTOR Result;    Result.vector4_f32[0] = 1.f / V.vector4_f32[0];    Result.vector4_f32[1] = 1.f / V.vector4_f32[1];    Result.vector4_f32[2] = 1.f / V.vector4_f32[2];    Result.vector4_f32[3] = 1.f / V.vector4_f32[3];    return Result; } // Machine Vision Library voidmachine_vision_filter_example (int *A, intboxStart) { for(int i = 0; i < 100; i++) A[boxStart+ i] = A[boxStart + i] + 1; }

  15. Vector Calling Convention struct Particle { __m256 x; __m256 y; __m256 z; __m256 w;    }; Particle __vectorcall foo(Particle a, __m256 scale) {   Particle t; t.x = _mm256_mul_ps(a.x, scale); t.y = _mm256_mul_ps(a.y, scale); t.z = _mm256_mul_ps(a.z, scale); t.w = _mm256_mul_ps(a.w, scale); return t; } Reduces instruction count Minimizes stack allocation Use /Gv for whole module

  16. C++ AMP • In VS2012: • Programming model for heterogeneous computing • Allowed C++ code to run on the GPU for general-purpose computation • STL-like library for multidimensional data • VS2013 adds: • Shared memory support to eliminate/reduce copying of data between CPU and GPU • Enhanced texture support: texture sampling, mipmap support and staging textures • C++ AMP debugging on Win7 and side-by-side CPU/GPU debugging • Faster C++ AMP runtime: improved copy performance, reduce launch overhead • Better DirectX interop support • Improved C++ AMP runtime diagnostics • Improvements to array_view APIs

  17. Agenda • 0. Windows 8.1 Tools • 1. Performance • 2. Compatibility • 3. Portability • 4. Productivity

  18. C++11 • We have a lot here … • see Herb’s talk on Friday at noon.

  19. Agenda • 0. Windows 8.1 Tools • 1. Performance • 2. Compatibility • 3. Portability • 4. Productivity

  20. C++ REST SDK • Cloud-based client-server communications library for C++ • Basics: • Connecting and interacting with RESTfulservices • Uncompromised performance and productivity • Asynchrony for responsiveness and scalability • Uses modern C++11 patterns • Cross-platform enabled and OSS

  21. C++ REST SDK • HTTP Client to send requests and handle responses • JSON library for constructing, parsing and serializing JSON objects. • Asynchronous Streams and Stream Buffers for reading/writing bytes to/from an underlying medium. • http://casablanca.codeplex.com

  22. Basic HTTP Client • http_client client(L"http://www.myhttpserver.com"); • http_request request(methods::GET); • client.request(request).then([](http_responseresponse) • { • // Perform actions here to inspect the HTTP response... • if(response.status_code() == status_codes::OK) • { • } • });

  23. Make an HTTP request to get a JSON value • voidRequestJSONValue() • { • http_client client(L"http://www.myhttpserver.com"); • client.request(methods::GET).then([](http_responseresponse) • { • if(response.status_code() == status_codes::OK) • { • returnresponse.extract_json(); • } • // Handle error cases, for now return null json value... • returntask_from_result(json::value()); • }) • .then([](json::valuev) • { • // Perform actions here to process the JSON value... • }); • }

  24. C++ REST SDK demo

  25. Agenda • 0. Windows 8.1 Tools • 1. Performance • 2. Compatibility • 3. Portability • 4. Productivity

  26. NuGet • Easy acquisition and usage of compatible libraries in C++ projects • Library vendors can expose their libraries as NuGet packages using available tools http://blogs.msdn.com/b/vcblog/archive/2013/04/26/nuget-for-c.aspx

  27. IDE Enhancements demo

  28. Code Formatting • Configurable options for indentation, space, new lines and wrapping • Automatically applied while typing, pasting or formatting

  29. Header / Code Switching Brace Completion

  30. Code Peek • View type definitions without leaving the current open file

  31. Code Analysis UI Enhancements • Filter on categories and sort on various fields to help focus on important problems first

  32. Async Debugging • Supports Windows Store and Desktop apps • Requires Windows 8.1 • Enhancements to the Call Stack and Tasks window • Answers the questions “Why am I here?” & “What is going on right now?”

  33. “Just My Code” debugging • Helps developer focus on code they authored • Call Stack window hides non-user code • Non-user code defined in configurable .natjmc file • Not used during stepping

  34. Interop debugging • Multiple flavors of interopdebugging enabled: • JavaScript / C++ • C# / VB / C++ • CPython / C++ • GPU / CPU • Enable by choosing an option in the Project Properties • Break in the debugger in either C++ or JS/C#/VB/Python code • Breakpoint | Exception| Break All (pause icon) • Inspect state, e.g. in Locals, Call Stack

  35. Resources • Visual C++ Blog • http://blogs.msdn.com/vcblog • Visual C++ Developer Center • http://msdn.microsoft.com/en-us/visualc/default.aspx • Other C++ Sessions at //BUILD

  36. Give us your feedback! Give us your feedback! • What? • Are you interested in having an impact on the future user experiences in Visual Studio? Come help us shape the future. • When & Where? • Schedule a time with us vsdr@microsoft.com • Room 254 South Moscone, West Mezzanine Level • Why? • Your input and feedback will influence future Microsoft Visual Studio tools

  37. Required Slide *delete this box when your slide is finalized Your MS Tag will be inserted here during the final scrub. Evaluate this session • Scan this QR codeto evaluate this session and be automatically entered in a drawing to win a prize!

More Related