Decreasing the Number of Memory Accesses: The Compiler’s Secret Life 2/2

Decreasing the Number of Memory Accesses: The Compiler’s Secret Life 2/2

We investigate memory loads and stores that the compiler inserts for us without our knowledge: “the compiler’s secret life”. We show that these loads and stores, although necessary for the compiler are not necessary for the correct functioning of our program. And finally, we explain how you can improve the performance of your program by removing them.

For Software Performance, the Way Data is Accessed Matters!

For Software Performance, the Way Data is Accessed Matters!

In our experiments with the memory access pattern, we have seen that good data locality is a key to good software performance. Accessing memory sequentially and splitting the data set into small-sized pieces which are processed individually improves data locality and software speed. In this post, we will present a few techniques to improve the…

What is faster: vec.emplace_back(x) or vec[x] ?

What is faster: vec.emplace_back(x) or vec[x] ?

When we need to fill std::vector with values and the size of vector is known in advance, there are two possibilities: using emplace_back() or using operator[]. For the emplace_back() we should reserve the necessary amount of space with reserve() before emplacing into vector. This will avoid unnecessary vector regrow and benefit performance. Alternatively, if we…

When an instruction depends on the previous instruction depends on the previous instructions… : long instruction dependency chains and performance

When an instruction depends on the previous instruction depends on the previous instructions… : long instruction dependency chains and performance

This post has a second part, the same problem is solved differently. Read more. In this post we investigate long dependency chains: when an instruction depends on the previous instruction depends on the previous instruction… We want to see how long dependency chains lower CPU performance, and we want to measure the effect of interleaving…