advanced

CppCon 2015 Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!--Chandler Carruth

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2015 for you to enjoy. Here is today’s feature:

Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!

by Chandler Carruth

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

A primary use case for C++ is low latency, low overhead, high performance code. But C++ does not give you these things for free, it gives you the tools to control these things and achieve them where needed. How do you realize this potential of the language? How do you tune your C++ code and achieve the necessary performance metrics?

This talk will walk through the process of tuning C++ code from benchmarking to performance analysis. It will focus on small scale performance problems ranging from loop kernels to data structures and algorithms. It will show you how to write benchmarks that effectively measure different aspects of performance even in the face of advanced compiler optimizations and bedeviling modern CPUs. It will also show how to analyze the performance of your benchmark, understand its behavior as well as the CPUs behavior, and use a wide array of tools available to isolate and pinpoint performance problems. The tools and some processor details will be Linux and x86 specific, but the techniques and concepts should be broadly applicable.

The Ultimate Question of Programming, Refactoring, and Everything

Yes, you've guessed correctly - the answer is "42". In this article you will find 42 recommendations about coding in C++ that can help a programmer avoid a lot of errors, save time and effort.

The Ultimate Question of Programming, Refactoring, and Everything

by Andrey Karpov

From the article:

The scope of my interests − the C/C++ language and the promotion of code analysis methodology. I have been Microsoft MVP in Visual C++ for 5 years. The main aim of my articles and work in general - is to make the code of programs safer and more secure. I'll be really glad if these recommendations help you write better code, and avoid typical errors. Those who write code standards for companies may also find some helpful information here.

Sessions and object lifetimes--Andrzej Krzemieński

How will you move?

Sessions and object lifetimes

by Andrzej Krzemieński

From the article:

In this post we will see how C++ object lifetime can be used to control the duration of sessions: time spent owing and using a resource. The goal is to get a better understanding of what tools the language offers for using and sharing resources efficiently...

Concepts without Concepts--Andrzej Krzemieński

Concetps are good, but how can we get them?

Concepts without Concepts

by Andrzej Krzemieński

From the article:

“Concept” can mean two things in the context of C++ generic libraries:

  1. Something informal: something we know about template parameters, and can tell to other human programmers, e.g. in documentation.
  2. A language feature.

This post is about concepts in the first sense. It claims that we had concepts for quite a while already, and shows how we can use them to make generic libraries easier to use...

Modern generic programming using the Tick and Fit libraries

Paul Fultz II talked at C++Now 2015 about generic programming.

Modern generic programming using the Tick and Fit libraries

By Paul Fultz II

From the abstract:

C++ templates provide a very powerful abstraction for generic programming. Even so, they still suffer from long and confusing compile errors and this puts an extra burden of complexity on library writers who want to provide flexibility in their interfaces. In this talk, we will first discuss the importance of concept-based type requirements in code in order to produce clear compile errors, and how the Tick library can be used to specify and check those type requirements.

Later, we will discuss how the Fit library can further enhance generic programming. The Fit library provides many abstractions over functions including a way to do sophisticated overloading in a simple and concise manner. We will discuss in this talk how we can leverage these abstractions with overloading to provide simple and flexible interfaces. We will also look at comparison of these solutions with the Concepts Lite proposal and Boost.ConceptCheck.

slides: here