@himskim
Cppcon 2016 Keynote Bjarne Stroustrup
VS 2015? 좋겠죠
근데 우린 못바꿔요
백만스물두
• Native Multi-targeting
• Round-tripping
https://msdn.microsoft.com/ko-kr/library/dn986839.aspx
Development Cycle
Edit
Build
Debug
Refactoring
Code generation
Quick Fixes
Intellisense
https://visualstudiogallery.msdn.microsoft.com/
Demo
Edit
Build
Debug
"Within C++ is a smaller, simpler,
safer language struggling to get out.“
- Bjarne Stroustrup
Major design decision
C++17
constexpr Expression SFINAE Two-phase lookup
Variable templates Extended constexpr
NSDMI for aggregates
coroutines modules concepts Nested namespace Folded expressions
Compile Fast & Link Fast
Generate Fast & Secure Code
• 더욱 빨라진 Whole Program Optimized builds
• 링커 개선 및 신규 옵션 제공
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 링커 신규 옵션
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%+ 속도 개선
• 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:
• 그외
• /Guard:cf – 새로운 컴파일 스위치
• Intel Memory Protection Extension(MPX) 지원
Incredibuild and Visual Studio
6:32
4:42
0:47
Visual Studio IncrediBuild
(Predicted)
IncrediBuild
(With Helpers*)
Ace open source 빌드 벤치마크
일반적으로 10% 이상 빌드 속도 개선
• 독립 설치 가능한 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
Demo
Edit
Build
Debug
•
•
• Set next statement
•
•
•
•
•
•
•
•
•
•
•
•
•
•
• PerfTips
• Integrated CPU Profiling
• Integrated Memory Profiling
•
•
Demo
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
VS2015 C++ new features
VS2015 C++ new features

VS2015 C++ new features

Editor's Notes

  • #19 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/
  • #38 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/
  • #46 MFC Dynamic Dialog Layout https://blogs.msdn.microsoft.com/vcblog/2015/04/29/mfc-dynamic-dialog-layout/
  • #49 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/