This document summarizes Bjarne Stroustrup's keynote at Cppcon 2016 and new features in Visual Studio 2015. It discusses improvements to build times with features like whole program optimization and linker optimizations. It also covers compiler optimizations like vectorization of control flow and loop-if unswitching. New C++17 language features and the standalone Visual C++ build tools are also mentioned. Finally, it demonstrates debugging and profiling improvements in Visual Studio 2015.
21. • 링커 개선 및 신규 옵션 제공
680
138
84
573
68
61
8
327
KINE C T S PO R TS R IV AL ( XBO X O NE ) F O R Z A ( XBO X O NE ) DE S TINY ( XBO X O NE ) C HR O ME
CLEAN LINK TIMES WITH VS2015 (SEC)
VS2013 RTM VS2015 RTM
• /Debug:fastlink
• /Zc:inline
• Incremental linking for
static libraries
• Linker multi-threading
VS2015 링커 신규 옵션
22. Vectorization of control-flow / Bit-test merging
void blackscholes(float* input, int *signArray, int n)
{
for (int i = 0; i < n; i++) {
float InputX = input[i];
int sign;
if (InputX < 0.0f) {
InputX = -InputX;
sign = 1;
} else {
sign = 0;
}
input[i] = InputX;
signArray[i] = sign;
}
}
mask = InputX < 0.0f ? 0xFFFFFFFF : 0;
InputX = (mask & -InputX) | (~mask & InputX);
sign = (mask & 1) | (~mask & 0);
Branch를 제거하여 최적화된 코드
벤치마크 테스트 결과
300%+ 속도 개선
23. • Loop-if unswitching
for (int i = 0; i < 100; i++)
if (some_invariant_condition)
...
Source code:
if (some_invariant_condition)
for (int i = 0; i < 100; i++)
...
Optimized as if:
27. Incredibuild and Visual Studio
6:32
4:42
0:47
Visual Studio IncrediBuild
(Predicted)
IncrediBuild
(With Helpers*)
Ace open source 빌드 벤치마크
일반적으로 10% 이상 빌드 속도 개선
28. • 독립 설치 가능한 compiler, libraries, scripts
• Standalone Compiler
• Visual Studio Code
- ext install cpptools
• Team Build Server
• Python/Node.js/Rust
독립 Visual C++ Build 도구 지원
http://landinghub.visualstudio.com/visual-cpp-build-tools
33. Visual Studio 2015 Video
Visual C++ 포팅 및 업그레이드 가이드
Stuck on an older toolset version? Move to Visual Studio 2015 without upgrading your
toolset
Visual C++ Build Tool
Debugging Tips and Tricks for C++ in Visual Studio
C++ Edit and Continue in visual studio 2015 update
Compiler improvement in vs 2015 update 3
MFC Dynamic Dialog Layout
Speeding up the Incremental Developer Build Scenario
Editor's Notes
https://blogs.msdn.microsoft.com/vcblog/2016/09/13/visual-c-for-linux-1-0-5-updates/
Visual C++ for Linux Development
https://visualstudiogallery.msdn.microsoft.com/725025cf-7067-45c2-8d01-1e0fd359ae6e
Try out the latest C++ compiler toolset without waiting for the next update of Visual Studio
https://blogs.msdn.microsoft.com/vcblog/2016/04/26/stay-up-to-date-with-the-visual-c-tools-on-nuget/
Announcing Visual C++ Build Tools 2015 – standalone C++ tools for build environments
https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/
Improvements for C++ Edit and Continue in Visual Studio 2015 Update 1
https://blogs.msdn.microsoft.com/vcblog/2015/11/30/improvements-for-c-edit-and-continue-in-visual-studio-2015-update-1/
Memory Profiling in Visual C++ 2015
https://blogs.msdn.microsoft.com/vcblog/2015/10/21/memory-profiling-in-visual-c-2015/
Debug Visualizers in Visual C++ 2015
https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/
Rejuvenating the Microsoft C/C++ Compiler
https://blogs.msdn.microsoft.com/vcblog/2015/09/25/rejuvenating-the-microsoft-cc-compiler/
Stuck on an older toolset version? Move to Visual Studio 2015 without upgrading your toolset
https://blogs.msdn.microsoft.com/vcblog/2016/02/24/stuck-on-an-older-toolset-version-move-to-visual-studio-2015-without-upgrading-your-toolset/
Debugging Tips and Tricks for C++ in Visual Studio
https://blogs.msdn.microsoft.com/vcblog/2016/07/11/debugging-tips-and-tricks-for-c-in-visual-studio/
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/C-Plus-Plus-Debugging-Tips-and-Tricks
C++ Edit and Continue in visual studio 2015 update
https://blogs.msdn.microsoft.com/vcblog/2016/07/01/c-edit-and-continue-in-visual-studio-2015-update-3/
C++ - Native Memory Diagnostics
https://channel9.msdn.com/Series/ConnectOn-Demand/216
Native Memory Diagnostics in CTP 5
https://blogs.msdn.microsoft.com/vcblog/2015/01/29/native-memory-diagnostics-in-ctp-5/
Developer Assistant now supports C++
https://blogs.msdn.microsoft.com/visualstudio/2016/07/13/developer-assistant-supports-cpp/
Macros extension: VS 2015 support and open-sourced
https://blogs.msdn.microsoft.com/visualstudio/2016/05/11/macros-extension-open-sourced-in-visual-studio-2015/
Improving the C++ Developer Experience in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudio/2016/04/13/improving-the-c-developer-experience-in-visual-studio-2015/
Visual C++ 2015 Migration Documentation Update
https://blogs.msdn.microsoft.com/vcblog/2016/09/19/visual-c-2015-migration-documentation-update/
Microsoft/VCSamples
https://github.com/Microsoft/vcsamples
Microsoft/VCSamples
https://github.com/Microsoft/VCSamples/wiki
Announcing the VC++ 2015 Migration Virtual Development Laboratory
https://blogs.msdn.microsoft.com/vcblog/2016/03/30/announcing-the-vc-2015-migration-virtual-development-laboratory/
Visual C++ for Linux 1.0.5 Updates
https://blogs.msdn.microsoft.com/vcblog/2016/09/13/visual-c-for-linux-1-0-5-updates/
Visual C++ for Linux Development
https://visualstudiogallery.msdn.microsoft.com/725025cf-7067-45c2-8d01-1e0fd359ae6e
Debugging Tips and Tricks for C++ in Visual Studio
https://blogs.msdn.microsoft.com/vcblog/2016/07/11/debugging-tips-and-tricks-for-c-in-visual-studio/
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/C-Plus-Plus-Debugging-Tips-and-Tricks
C++ Edit and Continue in visual studio 2015 update
https://blogs.msdn.microsoft.com/vcblog/2016/07/01/c-edit-and-continue-in-visual-studio-2015-update-3/
Visual Studio 2015 update 3 available now
https://blogs.msdn.microsoft.com/vcblog/2016/06/28/visual-studio-2015-update-3-available-now/
Release note
https://www.visualstudio.com/news/releasenotes/vs2015-update3-vs
Compiler improvement in vs 2015 update 3
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/compiler-improvements-in-vs-2015-update-3-rc/
Compiler improvements in VS 2015 Update 2
https://blogs.msdn.microsoft.com/vcblog/2016/02/11/compiler-improvements-in-vs-2015-update-2/
Visual Studio 2015 Update 1 Is Here
https://blogs.msdn.microsoft.com/vcblog/2015/12/01/visual-studio-2015-update-1-is-here/
Improving your build times with IncredBuild and Visual Studio
https://blogs.msdn.microsoft.com/visualstudio/2015/11/30/improving-your-build-times-with-incredibuild-and-visual-studio-2015/
https://www.incredibuild.com/microsoft-incredibuild-partnership.html, and through two Channel9 videos: What is Incredibuild? and Incredibuild with Visual Studio 2015 Update 1.
Coroutines in Visual Studio 2015 – Update 1
https://blogs.msdn.microsoft.com/vcblog/2015/11/30/coroutines-in-visual-studio-2015-update-1/
Improvements for C++ Edit and Continue in Visual Studio 2015 Update 1
https://blogs.msdn.microsoft.com/vcblog/2015/11/30/improvements-for-c-edit-and-continue-in-visual-studio-2015-update-1/
Cpp guideline
https://github.com/isocpp/CppCoreGuidelines
http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
Visual Studio 2015 RTM Now Available
https://blogs.msdn.microsoft.com/vcblog/2015/07/20/visual-studio-2015-rtm-now-available/
Single-File IntelliSense and other IDE Improvements in VS2015
https://blogs.msdn.microsoft.com/vcblog/2015/04/29/single-file-intellisense-and-other-ide-improvements-in-vs2015/
GoingNative 37: Single-File IntelliSense (+ go watch //build + download VS15 RC!)
https://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-37-Single-File-IntelliSense
MFC Dynamic Dialog Layout
https://blogs.msdn.microsoft.com/vcblog/2015/04/29/mfc-dynamic-dialog-layout/
C++ IDE Improvements
https://channel9.msdn.com/Series/ConnectOn-Demand/210
Single File Intellisense
Refactoring
C++ - Native Memory Diagnostics
https://channel9.msdn.com/Series/ConnectOn-Demand/216
Expression SFINAE improvements in VS 2015 Update 3
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/expression-sfinae-improvements-in-vs-2015-update-3/
Standards version switches in the compiler
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
Try out the latest C++ compiler toolset without waiting for the next update of Visual Studio
https://blogs.msdn.microsoft.com/vcblog/2016/04/26/stay-up-to-date-with-the-visual-c-tools-on-nuget/
Be sure to try out the C++ Quick Fixes extension!
https://blogs.msdn.microsoft.com/vcblog/2016/04/06/be-sure-to-try-out-the-cpp-quick-fixes-extension/
C++ Quick Fixes
https://visualstudiogallery.msdn.microsoft.com/be91feef-8dc3-4f7a-ac9f-f34e7ca5918f
Add missing #include
Add using namespace/Fully qualify symbol
Online Help
Add missing semicolon
Insert missing namespace on using statements
Replace bad indirection operands
Remove break outside of loops or switch
Remove multiple storage classes
Display peek definition on add #include
Announcing the official release of the Visual C++ Build Tools 2015
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/
Announcing Visual C++ Build Tools 2015 – standalone C++ tools for build environments
https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/
Visual C++ Build Tools
http://landinghub.visualstudio.com/visual-cpp-build-tools
Visual Studio 2015 Update 1: New Experimental Feature – MPX
https://blogs.msdn.microsoft.com/vcblog/2016/01/20/visual-studio-2015-update-1-new-experimental-feature-mpx/
Improvements for C++ Edit and Continue in Visual Studio 2015 Update 1
https://blogs.msdn.microsoft.com/vcblog/2015/11/30/improvements-for-c-edit-and-continue-in-visual-studio-2015-update-1/
New, Improved, and Faster Database Engine
https://blogs.msdn.microsoft.com/vcblog/2015/11/11/new-improved-and-faster-database-engine/
Memory Profiling in Visual C++ 2015
https://blogs.msdn.microsoft.com/vcblog/2015/10/21/memory-profiling-in-visual-c-2015/
Debug Visualizers in Visual C++ 2015
https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/
C++ Edit and Continue in Visual Studio 2015
https://blogs.msdn.microsoft.com/vcblog/2015/07/22/c-edit-and-continue-in-visual-studio-2015/
MFC Dynamic Dialog Layout
https://blogs.msdn.microsoft.com/vcblog/2015/04/29/mfc-dynamic-dialog-layout/
Dynamic Layout
https://msdn.microsoft.com/en-us/library/mt270148.aspx
Single-File IntelliSense and other IDE Improvements in VS2015
https://blogs.msdn.microsoft.com/vcblog/2015/04/29/single-file-intellisense-and-other-ide-improvements-in-vs2015/
More about resumable functions in C++
https://blogs.msdn.microsoft.com/vcblog/2015/04/29/more-about-resumable-functions-in-c/
C/C++ Code analysis in VS2015 – RC Update
https://blogs.msdn.microsoft.com/vcblog/2015/04/27/cc-code-analysis-in-vs2015-rc-update/
Year: 2015
https://blogs.msdn.microsoft.com/vcblog/?m=20152
C/C++ Code analysis in VS2015
https://blogs.msdn.microsoft.com/vcblog/2015/02/24/cc-code-analysis-in-vs2015/
Native Memory Diagnostics in CTP 5
https://blogs.msdn.microsoft.com/vcblog/2015/01/29/native-memory-diagnostics-in-ctp-5/
Developer Assistant now supports C++
https://blogs.msdn.microsoft.com/visualstudio/2016/07/13/developer-assistant-supports-cpp/
Macros extension: VS 2015 support and open-sourced
https://blogs.msdn.microsoft.com/visualstudio/2016/05/11/macros-extension-open-sourced-in-visual-studio-2015/
14 more reasons to download Visual Studio 2015 Update 2 today
https://blogs.msdn.microsoft.com/visualstudio/2016/05/06/14-reasons-to-download-visual-studio-2015-update-2-today/
Microsoft Visual Studio 2015 Update 3 (KB3165756)
https://msdn.microsoft.com/en-us/library/mt752379.aspx
Microsoft Visual Studio 2015 Update 2 (KB3151378)
https://msdn.microsoft.com/en-us/library/mt695655.aspx
Microsoft Visual Studio 2015 Update 1 (KB3110221)
https://msdn.microsoft.com/en-us/library/mt634751.aspx
Rejuvenating the Microsoft C/C++ Compiler
https://blogs.msdn.microsoft.com/vcblog/2015/09/25/rejuvenating-the-microsoft-cc-compiler/
Stuck on an older toolset version? Move to Visual Studio 2015 without upgrading your toolset
https://blogs.msdn.microsoft.com/vcblog/2016/02/24/stuck-on-an-older-toolset-version-move-to-visual-studio-2015-without-upgrading-your-toolset/
Introducing C++ Experimental Editor Tools!
https://blogs.msdn.microsoft.com/vcblog/2015/11/03/introducing-c-experimental-editor-tools/
Diagnostic Tools debugger window in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/16/diagnostic-tools-debugger-window-in-visual-studio-2015/
IntelliTrace in Visual Studio Enterprise 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/16/intellitrace-in-visual-studio-ultimate-2015/
Walkthrough of Live Debugging using IntelliTrace in Visual Studio 2015 (Text Editor)
https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/16/walkthrough-of-live-debugging-using-intellitrace-in-visual-studio-2015-text-editor/
Walkthrough of Live Debugging using IntelliTrace in Visual Studio 2015 (Social Club)
https://blogs.msdn.microsoft.com/visualstudioalm/2015/04/29/walkthrough-of-live-debugging-using-intellitrace-in-visual-studio-2015-social-club/
Memory Usage tool while debugging in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/13/memory-usage-tool-while-debugging-in-visual-studio-2015/
Diagnosing Event Handler Leaks with the Memory Usage Tool in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2015/04/29/diagnosing-event-handler-leaks-with-the-memory-usage-tool-in-visual-studio-2015/
PerfTips: Performance information at-a-glance while debugging with Visual Studio
https://blogs.msdn.microsoft.com/visualstudioalm/2014/08/18/perftips-performance-information-at-a-glance-while-debugging-with-visual-studio/
Video
PerfTips and the Diagnostic Tools Window
https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2015-Final-Release-Event/PerfTips-and-the-Diagnostic-Tools-Window
Visual Studio 2015 Diagnostic Tools
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-2015-Diagnostic-Tools
Historical Debugging with IntelliTrace in Visual Studio 2015
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Historical-Debugging-with-IntelliTrace-in-Visual-Studio-2015
Debugging Performance Issues Using Visual Studio 2015
https://channel9.msdn.com/Events/dotnetConf/2015/Debugging-Performance-Issues-Using-Visual-Studio-2015
New Breakpoint Configuration Experience in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2014/10/06/new-breakpoint-configuration-experience-in-visual-studio-2015/
Conditional statements
Hit counts
Filters
Tracepoints
The New Exception Settings Window in Visual Studio 2015
https://blogs.msdn.microsoft.com/visualstudioalm/2015/02/23/the-new-exception-settings-window-in-visual-studio-2015/
PerfTips: Performance Information at-a-glance while Debugging with Visual Studio
https://blogs.msdn.microsoft.com/visualstudioalm/2014/08/18/perftips-performance-information-at-a-glance-while-debugging-with-visual-studio/
Productivity Power Tools 2015
https://visualstudiogallery.msdn.microsoft.com/34ebc6a2-2777-421d-8914-e29c1dfa7f5d
UserVoice
https://visualstudio.uservoice.com/forums/121579-visual-studio-2015
Visual C++ for Linux Development
https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/
C++ Core Guidelines Checkers: Preview of the Lifetime Safety checker
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/c-core-guidelines-checkers-preview-of-the-lifetime-safety-checker/
Using C++ Coroutines to simplify async UWP code
https://blogs.msdn.microsoft.com/vcblog/2016/04/04/using-c-coroutines-to-simplify-async-uwp-code/
C++ Build Tools
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/