Upload
-
View
18
Download
1
Embed Size (px)
Citation preview
@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+
+1
7
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
K I N E C T S P O R T S R I V A L ( X B O X O N E ) F O R Z A ( X B O X O N E ) D E S T I N Y ( X B O X O N E ) C H R O M E
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