SlideShare a Scribd company logo
7++ Reasons to Move Your C++ Code to Visual Studio 2017
7
#1
#2
#3
#4
#5
#6
#7
2017
https://aka.ms/cpp/build2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
https://aka.ms/msvcconformance
#1
reasonsto move yourC++ code to
Visual Studio7 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
// BRK2146 // *recording coming soon
#2
reasonsto move yourC++ code to
Visual Studio7 2017
https://aka.ms/msvc
+8.9%
scalar replacement to sink stores out of loops
✔
✔
✔
e.g. /guard:cf, /GS, /Qspectre
Example New diagnostic
struct C { int x; int y;
C (int a): y(a), x(y) {}
};
warning C5038: data member 'C::y' will be initialized after
data member 'C::x'
SPEC 2017 2015 2017
602.gcc_s 521 443 15%
605.mcf_s 572 546 5%
620.omnetpp_s 402 393 2%
623.xalancbmk_s 163 157 4%
625.x264_s 269 204 24%
…
#3
reasonsto move yourC++ code to
Visual Studio7 2017
Side-by-side
https://aka.ms/vcinstaller
#4
reasonsto move yourC++ code to
Visual Studio7 2017
https://aka.ms/cpp/upgrade
#5
reasonsto move yourC++ code to
Visual Studio7 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
https://aka.ms/vcpkg
7++ Reasons to Move Your C++ Code to Visual Studio 2017
https://aka.ms/openfolder/cpp
5/9 9:30AM // THR2046 //
Marc Goodner, Will Buik
“Bring your C++ Code to Visual Studio 2017 with
Open Folder”
https://aka.ms/cmake
https://aka.ms/vslinux
#6
reasonsto move yourC++ code to
Visual Studio7 2017
2017 15.7
2017
2015
Solution load (cold) C++ IntelliSense population
17:30m
4:20m
2:50m
21m
22:55m
13:30m
38:30m
27:15m
16:20m
2.3x
2017 15.7
2017
2015 17:25m
1:08m
48s
21.9x
2017 15.7
2017
2015 2.23 GB
540 MB
540 MB
4.1X
2017 15.7
2017
2015 3.32 GB
1.3 GB
774 MB
4.2X
2017 15.7
2017
2015
5.6s
15.6s
2017 15.7
2017 7:22m
3:31m
2017 15.7
2017
2015 7:38m
3:40m
2:45m
2.8X
4.1X 2.4X
2015 2017 15.7
288.79s 68.83s*
2015 2017 15.7
82s 47s
34s*
2015 2017 15.7
2,223.48s 1,907.41s 14%
2015 2017 15.7
1,703s 1,433s 16%
https://aka.ms/vcthroughput
#7
reasonsto move yourC++ code to
Visual Studio7 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
Read & Edit
New filters + Predictive IntelliSense
mode
Go To (ctrl + ,) with various filters
Find All References improvements
Code formatting enforcement
(via. .clang-format or .editorconfig)
Structure guidelines
Ctrl+Click to go-to-definition
(and coming in 15.8)
C++ Template IntelliSense
Code Analysis warnings as squiggles
Expand macro
Convert macro to constexpr
Diagnose
Improved
Error List results
Memory and CPU profiler
Debugging
std::function debugging
Run to Click
Reattach to process
Exception helper
Break-on-exception conditions
Compiler diagnostics via /diagnostics:caret
ImageWatch visualizer (VS Marketplace)
Test
CodeLens
New Unit Test Frameworks
Google Test
Boost.Test
Compile
/debug:fastlink
OSS libs from https://aka.ms/vcpkg
Commit
Force push your changes
SSH support for remotes
View Commit Diff
#0
reasonsto move yourC++ code to
Visual Studio7 2017
https://developercommunity.visualstudio.comhttps://visualstudio.uservoice.com/
#1
#2
#3
#4
#5
#6
#7
https://aka.ms/vscpp
https://aka.ms/cppsurvey
7++ Reasons to Move Your C++ Code to Visual Studio 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
7++ Reasons to Move Your C++ Code to Visual Studio 2017
2017 15.7
2017
2015
Solution load (cold) C++ IntelliSense population Population min/max
17:30m
4:20m
2:50m
21m
22:55m
13:30m
38:30m
27:15m
16:20m
2.3x
2017 15.7
2017
2015 17:30m
1:08m
48s
21.9x
2017 15.7
2017
2015 2.23 GB
540 MB
540 MB
4.1X
Example New diagnostic under /permissive-
template<typename T>
void bar()
{
T::foo<int>();
// Should be T::template foo<T>();
}
test.cpp(5,8): error C7510: 'foo': use of dependent template name requires 'template' keyword
T::foo<int>();
^
template <typename T>
void bar() {
T::Type x;
// Should be typename T::Type x
}
test.cpp(5,5): error C7511: 'Type': use of dependent type name must be prefixed with 'typename'
T::Type x;
^
struct X {};
template <class T>
void bar() {
typename X x; // Should be "X x"
}
test.cpp(5,11): error C7511: 'X': 'typename' keyword must be followed by a qualified name
typename X x;
^
https://blogs.msdn.microsoft.com/vcblog/2017/12/13/broken-warnings-theory/
Example New diagnostic
struct C
{
C (int a): y(a), x(y) {}
int x;
int y;
};
warning C5038: data member 'C::y' will be initialized after data member 'C::x'
SPEC 2017
Benchmark
VS 2015
Update
3
VS
2017
15.5
602.gcc_s 521 443
605.mcf_s 572 546
620.omnetpp_s 402 393
623.xalancbmk_s 163 157
625.x264_s 269 204
631.deepsjeng_s 317 302
641.leela_s 450 431
657.xz_s 2247 2101
619.lbm_s 943 869
638.imagick_s 5721 4891
644.nab_s 1907 1637
508.namd_r 226 222
510.parest_r 287 280
511.povray_r 336 337
526.blender_r 278 239
Measurements in seconds
Lower is better
7++ Reasons to Move Your C++ Code to Visual Studio 2017
https://azure.microsoft.com/develop/iot/
https://developercommunity.visualstudio.comhttps://visualstudio.uservoice.com/

More Related Content

PDF
Plexyglass Coil Component
PPTX
What's New in ECMAScript 2015
PDF
OWASP Juice Shop 5.x and beyond
PDF
Owasp Juice Shop: Achieving sustainability for open source projects
PPTX
Death Defying Feats of Debuggery
PDF
coil base
PDF
Virtualization the engine behind cloud computing
PPTX
How to lock a Python in a cage? Managing Python environment inside an R project
Plexyglass Coil Component
What's New in ECMAScript 2015
OWASP Juice Shop 5.x and beyond
Owasp Juice Shop: Achieving sustainability for open source projects
Death Defying Feats of Debuggery
coil base
Virtualization the engine behind cloud computing
How to lock a Python in a cage? Managing Python environment inside an R project

Similar to 7++ Reasons to Move Your C++ Code to Visual Studio 2017 (20)

PDF
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
PDF
a_new_decade_of_visual_studio_cpp20_open_stl_and_more__sy_brand_marian_luparu...
PPTX
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
PDF
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
PDF
"Why is there no artificial intelligence yet?" Or, analysis of CNTK tool kit ...
PPTX
Whats New in Visual Studio 2012 for C++ Developers
PDF
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
PDF
How to make a large C++-code base manageable
PDF
How to avoid bugs using modern C++
PDF
Modern C++
PDF
C++ Training
PDF
How to Improve Visual C++ 2017 Libraries Using PVS-Studio
PPTX
Summary of C++17 features
PDF
100 bugs in Open Source C/C++ projects
PDF
100 bugs in Open Source C/C++ projects
PDF
Exploring Microoptimizations Using Tizen Code as an Example
PDF
Debugging and Profiling C++ Template Metaprograms
PPTX
Effective C++/WinRT for UWP and Win32
PPTX
Recent c++ goodies (March 2018)
PPTX
The Great and Mighty C++
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
a_new_decade_of_visual_studio_cpp20_open_stl_and_more__sy_brand_marian_luparu...
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
"Why is there no artificial intelligence yet?" Or, analysis of CNTK tool kit ...
Whats New in Visual Studio 2012 for C++ Developers
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
How to make a large C++-code base manageable
How to avoid bugs using modern C++
Modern C++
C++ Training
How to Improve Visual C++ 2017 Libraries Using PVS-Studio
Summary of C++17 features
100 bugs in Open Source C/C++ projects
100 bugs in Open Source C/C++ projects
Exploring Microoptimizations Using Tizen Code as an Example
Debugging and Profiling C++ Template Metaprograms
Effective C++/WinRT for UWP and Win32
Recent c++ goodies (March 2018)
The Great and Mighty C++
Ad

More from Microsoft Tech Community (20)

PPTX
100 ways to use Yammer
PPTX
10 Yammer Group Suggestions
PPTX
Removing Security Roadblocks to IoT Deployment Success
PPTX
Building mobile apps with Visual Studio and Xamarin
PPTX
Best practices with Microsoft Graph: Making your applications more performant...
PPTX
Interactive emails in Outlook with Adaptive Cards
PPTX
Unlocking security insights with Microsoft Graph API
PPTX
Break through the serverless barriers with Durable Functions
PPTX
Multiplayer Server Scaling with Azure Container Instances
PPTX
Explore Azure Cosmos DB
PPTX
Media Streaming Apps with Azure and Xamarin
PPTX
DevOps for Data Science
PPTX
Real-World Solutions with PowerApps: Tips & tricks to manage your app complexity
PPTX
Azure Functions and Microsoft Graph
PPTX
Ingestion in data pipelines with Managed Kafka Clusters in Azure HDInsight
PPTX
Getting Started with Visual Studio Tools for AI
PPTX
Using AML Python SDK
PPTX
Mobile Workforce Location Tracking with Bing Maps
PPTX
Cognitive Services Labs in action Anomaly detection
PPTX
Speech Devices SDK
100 ways to use Yammer
10 Yammer Group Suggestions
Removing Security Roadblocks to IoT Deployment Success
Building mobile apps with Visual Studio and Xamarin
Best practices with Microsoft Graph: Making your applications more performant...
Interactive emails in Outlook with Adaptive Cards
Unlocking security insights with Microsoft Graph API
Break through the serverless barriers with Durable Functions
Multiplayer Server Scaling with Azure Container Instances
Explore Azure Cosmos DB
Media Streaming Apps with Azure and Xamarin
DevOps for Data Science
Real-World Solutions with PowerApps: Tips & tricks to manage your app complexity
Azure Functions and Microsoft Graph
Ingestion in data pipelines with Managed Kafka Clusters in Azure HDInsight
Getting Started with Visual Studio Tools for AI
Using AML Python SDK
Mobile Workforce Location Tracking with Bing Maps
Cognitive Services Labs in action Anomaly detection
Speech Devices SDK
Ad

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Spectroscopy.pptx food analysis technology
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Encapsulation theory and applications.pdf
PDF
Mushroom cultivation and it's methods.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
1. Introduction to Computer Programming.pptx
Approach and Philosophy of On baking technology
NewMind AI Weekly Chronicles - August'25-Week II
Encapsulation_ Review paper, used for researhc scholars
Spectroscopy.pptx food analysis technology
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Spectral efficient network and resource selection model in 5G networks
Assigned Numbers - 2025 - Bluetooth® Document
Programs and apps: productivity, graphics, security and other tools
A comparative study of natural language inference in Swahili using monolingua...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Unlocking AI with Model Context Protocol (MCP)
Group 1 Presentation -Planning and Decision Making .pptx
Encapsulation theory and applications.pdf
Mushroom cultivation and it's methods.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Tartificialntelligence_presentation.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
1. Introduction to Computer Programming.pptx

7++ Reasons to Move Your C++ Code to Visual Studio 2017

Editor's Notes