programming-talkscurated list on GitHubRecommends
Under “C++”
39K subscribers • 42 videos on Hallway • Conference channel
Advanced. Deep dive for people who know the field.
34K views13 years ago2 recommendations
Programming languagesSystems programmingC++Compilers and interpretersPerformance and optimization
Chandler Carruth explains how modern compilers optimize complex C++ software systems through inlining, value semantics, and data flow analysis.
We are confronted today with the increasing complexity of our C++ software systems. To manage this complexity and build larger applications and systems, C++ strives to form emergent structures (often found in nature, such as snowflakes' symmetrical structures), where simple patterns combine to form a remarkably complex and powerful system. These structures provide both a means to limit the complexity of each component and the essential economies of scale we rely on when developing software. From handheld devices to warehouse-sized data centers, motivated by smaller devices and increased concerns over power consumption, we are relying upon C++ to deliver these complex systems with unmatched efficiency. Our optimizing compilers today are more important than ever before and are utterly opaque to most practicing programmers. Compounding matters, the very emergent structures which allow C++ systems to scale for humans often provide unique and unsolved challenges to optimization. In this talk, I will start with a brief overview of how modern optimizing compilers work with C++ code at a very high level. I will then walk through the specific structures and patterns of C++ code, which are at the core of forming emergent structures out of simple, elegant elements. I will also address how these interactions can be effectively modeled and analyzed by a compiler to produce efficient final programs. All of this will be illustrated by a collection of real world case studies, which are broadly applicable and show up throughout modern C++ code bases. My goal is to give a framework for understanding these interactions both in the C++ code and the optimizing compiler, so that programmers are aware of the implications posed by these patterns. Finally, I will introduce a set of principles and techniques for designing and implementing C++ programs and libraries to specifically clear the way for modern optimizers while retaining the simplicity of each component and the power of the combined whole. --- *--* ---What people say. Engineers recommend this talk for understanding how compilers optimize C++ code and the performance benefits of value semantics.
programming-talkscurated list on GitHubRecommends
Under “C++”
humanrebaron Hacker News • Recommends
On “Why I don't spend time with Modern C++ anymore”
u/skeetoin r/C_Programming • Mentions
On “Is using pointers and dereferencing slower than using non-pointer variables?”
u/skeetoin r/C_Programming • Mentions
On “Why is there no C conference?”
u/skeetoin r/C_Programming • Mentions
On “dvector.h - public domain single-file vector math library”
mihai_ionicon Hacker News • Mentions
On “Linus Torvalds - C++ is a horrible language”
dottrapon Hacker News • Mentions
On “One year of C”
u/skeetoin r/C_Programming • Mentions
On “Best way to do vector math?”
u/skeetoin r/C_Programming • Mentions
On “I made an STB style swiss table implementation”