You (probably) don't want `final` classes

C++11 introduced the final “keyword”. It can be used to mark member functions and classes as final, meaning that they cannot be overridden in derived classes/be base classes.

In this post I’ll take a closer look and explain why I consider the use of final classes problematic in some cases.

» read more »
Author's profile picture Jonathan

Issue driven development

A few weeks ago I tweeted the following:

I was requested to give a review about it:

This is basically the workflow I’m doing for issue driven development.

» read more »
Author's profile picture Jonathan

Standardese - a (work-in-progress) nextgen Doxygen

Documentation is essential. Without knowing what certain functions/classes/… do, it is very difficult to use any code properly.

Tools can help to provide a documentation. They can extract information from the source code and combine it with manually written information to generate documentation in a human readable output format.

There is a problem though: The current tools for C++ documentation aren’t that great. This post explains why and provides a (work-in-progress) solution.

» read more »
Author's profile picture Jonathan

How I have beaten Boost.Pool #4: About abstractions and algorithms

The last posts showed low-level techniques like ensuring inlining or removing branches.

But those techniques alone were not sufficient.

In this series, I’ll explain my changes and share some lessons about optimization I’ve learned in the process of beating Boost.Pool. The final post shows how to apply those techniques when designing your abstractions and the importance of smart algorithms.

» read more »
Author's profile picture Jonathan

How I have beaten Boost.Pool #3: Branches are bad

Branches and conditional jumps are essential for every program, you cannot write anything but the most trivial code without them. Yet they sometimes have a certain overhead and can lead to problems in performance critical code paths.

It is often faster if they weren’t there. But how can you do that?

In this series, I’ll explain my changes and share some lessons about optimization I’ve learned in the process of beating Boost.Pool. This time its all about branches and a more detailed information about the detail::small_free_memory_list.

» read more »
Author's profile picture Jonathan

Advertisement