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; }
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!