Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

VS2015 C++ new features

45 views

Published on

Visual Studio 2015 C++ new features

Published in: Software
  • Be the first to comment

  • Be the first to like this

VS2015 C++ new features

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

×