Presentation is loading. Please wait.

Presentation is loading. Please wait.

Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next.

Similar presentations


Presentation on theme: "Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next."— Presentation transcript:

1

2 Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next

3 VS 2008 VS 2010VS 2012 VS 2013

4

5

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

10

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]); }

16

17

18

19

20

21 Brace Completion

22

23 http://blogs.msdn.com/b/vcblog/archive/2013/04/26/nuget-for-c.aspx

24

25

26

27

28

29

30

31

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... }); }

34

35

36

37

38

39

40 Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next

41

42 Performance Productivity Libraries: full acquisition story Gaming and DX Parallel paradigms: parallel STL, await Native Desktop UI

43


Download ppt "Visual Studio 2013 Conformance Performance Productivity Services Mobile Devices What’s Next."

Similar presentations


Ads by Google