Training

In case your team is developing software where performance is important, we offer two courses that can help teach your team to write faster software.

The first course focuses on low-level aspects of programming in C and C++ and consists of the following topics:

  • A short introduction to computer architecture: instruction set, caches, branch prediction, out-of-order execution.
  • Optimize cache usage: Tips on how to write code that optimally uses the caches.
  • Optimizing function calls: Tips on how to write code that will suffer the least from overhead caused by function calling.
  • Optimizing branches: the impact of branches on your program’s performance. Optimizations related to branching.
  • Optimizations to avoid expensive integer and floating-point instructions
  • Optimizations in a multi-threaded environment.
  • Good practices to write efficient C++ code.
  • Compiler and linker switches that affect the code performance.
  • How to find the bottleneck? Introduction to profiling.

The second course focuses on good practices to write efficient C++ code and is aimed at developers who know C++ well but want to understand better what’s going on “under the hood” and how the code they write translates to instructions and speed.

  • A short introduction to computer architecture: instruction set, caches, branch prediction, out-of-order execution.
  • How C++ constructs translate to computer tongue. We talk about the performance impact of the most commonly used C++ constructs.
  • Good practices to write efficient C++ code.
  • Software architecture for good performance.

Both courses include lecture sessions and computer exercises that should illustrate the most important concepts. The training can be performed remotely or on-site. The sessions can be tailored to your team’s needs, i.e. some of the topics can be shortened or excluded from the curriculum.

For more information, use the contact page to contact us.