Download presentation
Presentation is loading. Please wait.
Published byGiles Patrick Modified over 9 years ago
2
Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next
3
VS 2008 VS 2010VS 2012 VS 2013
6
Explicit conversion operators Non-static data member initializers __func__ Extended sizeof Thread-safe function local static init Inline namespaces constexpr (incl. ctors, literal types) Raw string literals= default Implicit move generation alignof alignas Universal character names in literals Expression SFINAE Function template default arguments = delete Ref-qualifiers: & and && for *this noexcept (unconditional) noexcept (incl. conditional) C++11 preprocessor (incl. C++98 & C11) Delegating constructors “using” aliases C++14 libs: type aliases C++14 decltype(auto)Inheriting constructors char16_t, char32_t Attributes C++98 two-phase lookup Uniform init & initializer_lists C99 variable decls C99 _Bool C++14 auto function return type deduction User-defined literalsthread_local C++14 generalized constexpr Variadic templatesC99 compound literals C++14 generic lambdas (partial) C++14 generalized lambda capture Unrestricted unions C++14 variable templates C++14 libs: cbegin/ greater<>/make_unique C99 designated initializers C++TS? async/await (partial) C++14 libs: std:: user- defined literals constexpr (except ctors, literal types) C++TS concepts lite
7
Explicit conversion operators Non-static data member initializers __func__ Extended sizeof Thread-safe function local static init Inline namespaces constexpr (incl. ctors, literal types) Raw string literals= default Implicit move generation alignof alignas Universal character names in literals Expression SFINAE Function template default arguments = delete Ref-qualifiers: & and && for *this noexcept (unconditional) noexcept (incl. conditional) C++11 preprocessor (incl. C++98 & C11) Delegating constructors “using” aliases C++14 libs: type aliases C++14 decltype(auto)Inheriting constructors char16_t, char32_t Attributes C++98 two-phase lookup Uniform init & initializer_lists C99 variable decls C99 _Bool C++14 auto function return type deduction User-defined literalsthread_local C++14 generalized constexpr Variadic templatesC99 compound literals C++14 generic lambdas (partial) C++14 generalized lambda capture Unrestricted unions C++14 variable templates C++14 libs: cbegin/ greater<>/make_unique C99 designated initializers C++TS? async/await (partial) C++14 libs: std:: user- defined literals constexpr (except ctors, literal types) C++TS concepts lite
8
Explicit conversion operators Non-static data member initializers __func__ Extended sizeof Thread-safe function local static init Inline namespaces constexpr (incl. ctors, literal types) Raw string literals= default Implicit move generation alignof alignas Universal character names in literals Expression SFINAE Function template default arguments = delete Ref-qualifiers: & and && for *this noexcept (unconditional) noexcept (incl. conditional) C++11 preprocessor (incl. C++98 & C11) Delegating constructors “using” aliases C++14 libs: type aliases C++14 decltype(auto)Inheriting constructors char16_t, char32_t Attributes C++98 two-phase lookup Uniform init & initializer_lists C99 variable decls C99 _Bool C++14 auto function return type deduction User-defined literalsthread_local C++14 generalized constexpr Variadic templatesC99 compound literals C++14 generic lambdas (partial) C++14 generalized lambda capture Unrestricted unions C++14 variable templates C++14 libs: cbegin/ greater<>/make_unique C99 designated initializers C++TS? async/await (partial) C++14 libs: std:: user- defined literals constexpr (except ctors, literal types) C++TS concepts lite
9
Explicit conversion operators Non-static data member initializers __func__ Extended sizeof Thread-safe function local static init Inline namespaces constexpr (incl. ctors, literal types) Raw string literals= default Implicit move generation alignof alignas Universal character names in literals Expression SFINAE Function template default arguments = delete Ref-qualifiers: & and && for *this noexcept (unconditional) noexcept (incl. conditional) C++11 preprocessor (incl. C++98 & C11) Delegating constructors “using” aliases C++14 libs: type aliases C++14 decltype(auto)Inheriting constructors char16_t, char32_t Attributes C++98 two-phase lookup Uniform init & initializer_lists C99 variable decls C99 _Bool C++14 auto function return type deduction User-defined literalsthread_local C++14 generalized constexpr Variadic templatesC99 compound literals C++14 generic lambdas (partial) C++14 generalized lambda capture Unrestricted unions C++14 variable templates C++14 libs: cbegin/ greater<>/make_unique C99 designated initializers C++TS? async/await (partial) C++14 libs: std:: user- defined literals constexpr (except ctors, literal types) C++TS concepts lite Yes Maybe
11
Profile-Guided Optimizations /LTCG:PGI and /LTCG:PGO
12
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)
13
// 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; }
14
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
15
#include using namespace concurrency; int main() { int v[11] = {'G','d','k','k','n',31,'v','n','q','k','c'}; array_view av(11, v); parallel_for_each(av.extent, [=](index idx) restrict(amp) { av[idx] += 1; }); for(unsigned int i = 0; i < 11; i++) std::cout (av[i]); }
21
Brace Completion
23
http://blogs.msdn.com/b/vcblog/archive/2013/04/26/nuget-for-c.aspx
32
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) { } });
33
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... }); }
40
Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next
42
Performance Productivity Libraries: full acquisition story Gaming and DX Parallel paradigms: parallel STL, await Native Desktop UI
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.