performance compatibility portability connected windows store apps visual studio 2013 makes it...

Download performance compatibility portability Connected Windows Store Apps Visual Studio 2013 makes it easier to: Update your app tile using mobile services

If you can't read please download the document

Upload: eustacia-sullivan

Post on 23-Dec-2015

219 views

Category:

Documents


3 download

TRANSCRIPT

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • performance compatibility portability
  • Slide 5
  • Slide 6
  • Slide 7
  • 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
  • Slide 8
  • 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
  • Slide 9
  • Powerful Graphics Debugging VS2012 introduced DirectX-based Graphics debugging tools in VS Professional, Premium and Ultimate VS2013 adds: Support in VS Express Capturing frames from remote machines Compute shader debugging Faster frame capture
  • Slide 10
  • 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 *
  • Slide 11
  • C++/CX Boxed types in WinRT structs value struct Person { IBox ^ Age; } Overriding ToString() ref struct Person { public: String^ Name; virtual String^ ToString() override { return Name; } } Improved WinRT exceptions 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
  • Slide 12
  • Slide 13
  • Slide 14
  • Performance Optimizations Recap Compilation Unit Optimizations /O2 and friends Whole Program Optimizations /GL and /LTCG Profile-Guided Optimizations /LTCG:PGI and /LTCG:PGO
  • Slide 15
  • 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]; } + + r1 r2 r3 add r3, r1, r2 SCALAR (1 operation) v1 v2 v3 + + vector length vadd v3, v1, v2 VECTOR (N operations)
  • Slide 16
  • Automatic Vectorization // STL pointers everywhere; not even a loop counter variable void transform1(const int * first1, const int * last1, const int * 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 void four_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 void machine_vision_filter_example (int *A, int boxStart) { for (int i = 0; i < 100; i++) A[boxStart + i] = A[boxStart + i] + 1; }
  • Slide 17
  • 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
  • Slide 18
  • 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
  • Slide 19
  • Slide 20
  • C++11 We have a lot here see Herbs talk on Friday at noon.Herbs talk
  • Slide 21
  • Slide 22
  • C++ REST SDK Cloud-based client-server communications library for C++ Basics: Connecting and interacting with RESTful services Uncompromised performance and productivity Asynchrony for responsiveness and scalability Uses modern C++11 patterns Cross-platform enabled and OSS
  • Slide 23
  • 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
  • Slide 24
  • Basic HTTP Client http_client client(L"http://www.myhttpserver.com"); http_request request(methods::GET); client.request(request).then([](http_response response) { // Perform actions here to inspect the HTTP response... if(response.status_code() == status_codes::OK) { } });
  • Slide 25
  • Make an HTTP request to get a JSON value void RequestJSONValue() { http_client client(L"http://www.myhttpserver.com"); client.request(methods::GET).then([](http_response response) { if(response.status_code() == status_codes::OK) { return response.extract_json(); } // Handle error cases, for now return null json value... return task_from_result(json::value()); }).then([](json::value v) { // Perform actions here to process the JSON value... }); }
  • Slide 26
  • Slide 27
  • Slide 28
  • 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
  • Slide 29
  • Slide 30
  • Code Formatting Configurable options for indentation, space, new lines and wrapping Automatically applied while typing, pasting or formatting
  • Slide 31
  • Header / Code Switching Brace Completion
  • Slide 32
  • Code Peek View type definitions without leaving the current open file
  • Slide 33
  • Code Analysis UI Enhancements Filter on categories and sort on various fields to help focus on important problems first
  • Slide 34
  • 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?
  • Slide 35
  • 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
  • Slide 36
  • Interop debugging Multiple flavors of interop debugging 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
  • Slide 37
  • Thu 11:30am 3-141DirectX Graphics Debugging Tools Fri 10:30am4-329Native Code Performance and Memory: The Elephant in the CPU 2-211Windows Phone: Using Native (C++) Code in Your Apps Fri 12:00pm 2-306The Future of C++ 3-308C++/CX Best Practices
  • Slide 38
  • What? Are you interested in having an impact on the future user experiences in Visual Studio? Come help us shape the future. Give us your feedback! When & Where? Schedule a time with us [email protected] Room 254 South Moscone, West Mezzanine Level Why? Your input and feedback will influence future Microsoft Visual Studio tools Give us your feedback!
  • Slide 39
  • Slide 40