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

Slides:



Advertisements
Similar presentations
Lecture Computer Science I - Martin Hardwick The Programming Process rUse an editor to create a program file (source file). l contains the text of.
Advertisements

New Adventures in C++ with Cinder and More oct 2013 | nwcpp.org ale contenti | visual c++ dev mgr And a small pitch for VS 2013.
Question Bank. Explain the syntax of if else statement? Define Union Define global and local variables with example Concept of recursion with example.
A C++ Crash Course Part II UW Association for Computing Machinery Questions & Feedback.
Brown Bag #2 Advanced C++. Topics  Templates  Standard Template Library (STL)  Pointers and Smart Pointers  Exceptions  Lambda Expressions  Tips.
Overview  Miscellaneous Utility Functions  Return Type Deduction  Generic Lambdas  Generalised Lambda Captures  C++14 Literals  constexpr Functions.
What's new in Microsoft Visual C Preview
What's new in Microsoft Visual C
Introduction to Programming Lecture 39. Copy Constructor.
.NET 3.5 – Mysteries. NetFx Evolution NetFx 1.0 C# 1.0, VB 7.0, VS.NET NetFx 1.1 C# 1.1, VB 7.1, VS 2003 NetFx 2.0 C# 2.0, VB 8.0, VS 2005 NetFx 3.0 C#
Coding Standard: General Rules 1.Always be consistent with existing code. 2.Adopt naming conventions consistent with selected framework. 3.Use the same.
This Time Pointers (declaration and operations) Passing Pointers to Functions Const Pointers Bubble Sort Using Pass-by-Reference Pointer Arithmetic Arrays.
Memory allocation CSE 2451 Matt Boggus. sizeof The sizeof unary operator will return the number of bytes reserved for a variable or data type. Determine:
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.

C++ + r1 r2 r3 add r3, r1, r2 SCALAR (1 operation) v1 v2 v3 + vector length vadd v3, v1, v2 VECTOR (N operations)
performance compatibility portability Connected Windows Store Apps Visual Studio 2013 makes it easier to: Update your app tile using mobile services.
CSE 332: C++ Classes From Procedural to Object-oriented Programming Procedural programming –Functions have been the main focus so far Function parameters.
CSE 332: C++ templates and generic programming I Motivation for Generic Programming in C++ We’ve looked at procedural programming –Reuse of code by packaging.
Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter.
C# vs. C++ What's Different & What's New. An example C# public sometype myfn { get; set; } C++ public: sometype myfn { sometype get (); void set (sometype.
Imperative Programming. Heart of program is assignment statements Aware that memory contains instructions and data values Commands: variable declarations,
 Questions?  Hand back Midterm  Extra Credit Opportunity: CSET Colloquium Talks ◦ May 23 rd 4-5:30pm, PV206 (Priscilla Oppenheimer, Cisco Systems) ◦
LECTURE LECTURE 17 More on Templates 20 An abstract recipe for producing concrete code.
© Janice Regan, CMPT 128, Jan CMPT 128: Introduction to Computing Science for Engineering Students Data representation and Data Types Variables.
COMPUTER PROGRAMMING. Data Types “Hello world” program Does it do a useful work? Writing several lines of code. Compiling the program. Executing the program.
Working with Strings Lecture 2 Hartmut Kaiser
Algorithm Programming Bar-Ilan University תשס"ח by Moshe Fresko.
Programming Language C++ Xulong Peng CSC415 Programming Languages.
CS212: Object Oriented Analysis and Design Lecture 6: Friends, Constructor and destructors.
Computer Science and Software Engineering University of Wisconsin - Platteville 2. Pointer Yan Shi CS/SE2630 Lecture Notes.
Memory Management Issues, Solutions, and Examples.
Chapter 9: Part 2: Vectors + Maps and STL Overview JPC and JWD © 2002 McGraw-Hill, Inc. Modified by S. Sudarshan.
Copyright 2005, The Ohio State University 1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation.
1.Identifiers 2.Variables 3.Keywords 4.Statements 5.Comments 6.Whitespaces 7.Syntax 8.Semantic © In this session we will.
Variables and Data Types.  Variable: Portion of memory for storing a determined value.  Could be numerical, could be character or sequence of characters.
1 Chapter 1 C++ Basics Review Reading: Sections 1.4 and 1.5.
Object Management. Constructors –Compiler-generated –The Initializer List –Copy Constructors –Single-arg (conversion ctors) The Assignment Operator.
C++98 Initial Standard ~7 years C++03 Revised standard Limited to bug fixing ~ 5 years TR1 Pure library extension ~3 years C++11 Significant new features.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Advanced.NET Programming I 10 th Lecture Pavel Ježek
Operator Overloading. Binary operators Unary operators Conversion Operators –Proxy Classes bitset example Special operators –Indexing –Pre-post increment/decrement.
CS-1030 Dr. Mark L. Hornick 1 Basic C++ State the difference between a function/class declaration and a function/class definition. Explain the purpose.
Unrestricted © Siemens AG 2015 All rights reserved.Smarter decisions, better products. Move semantics && rvalue references, part 2 Bert Rodiers, Software.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Approval Detailed Specification Design Investigation.
Arrays, Vectors, and Strings Allocation and referencing.
1 Chapter 12 Arrays. 2 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating.
LECTURE LECTURE 11 Constructors and destructors Copy constructor Textbook: p , 183.
Herb Sutter Partner Program Manager C++: Conformance and Cross-platform Mobile Development.
CSC Java Programming, Fall, 2008 Week 3: Objects, Classes, Strings, Text I/O, September 11.
Chapter 1 C++ Basics Review (Section 1.4). Classes Defines the organization of a data user-defined type. Members can be  Data  Functions/Methods Information.
1 Classes classes and objects - from object-oriented programming point of view class declaration class class_name{ data members … methods (member functions)
C++ Programming Lecture 14 Arrays – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
1 Chapter 15-1 Pointers, Dynamic Data, and Reference Types Dale/Weems.
Slide 1 of 36. Attributes Associated with Every Variable Data type Data type Actual value stored in variable Actual value stored in variable Address of.
2. C FUNDAMENTALS. Example: Printing a Message /* Illustrates comments, strings, and the printf function */ #include int main(void) { printf("To C, or.
Basic Types, Variables, Literals, Constants. What is in a Word? A byte is the basic addressable unit of memory in RAM Typically it is 8 bits (octet)
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Have you filled out the questionnaire in Moodle? (3 left – as of last night). Office hours.
C++ Lesson 1.
4/13/ :02 AM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN.
C++: соответствие стандартам и кросс-платформенная разработка
C++ INTERVIEW QUESTIONS
C++ in 90 minutes.
Reserved Words.
.NET and .NET Core 5.2 Type Operations Pan Wuming 2016.
Object-Oriented Programming (OOP) Lecture No. 36
Keywords.
Prof. Bhushan Trivedi Director GLS Institute of Computer Technology
Standard Template Library
Presentation transcript:

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

VS 2008 VS 2010VS 2012 VS 2013

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

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

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

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

Profile-Guided Optimizations /LTCG:PGI and /LTCG:PGO

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)

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

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

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

Brace Completion

http_client client(L" 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) { } });

void RequestJSONValue() { http_client client(L" 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... }); }

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

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