We investigate how to make faster hash maps, trees, linked lists and vector of pointers by changing their data layout.
All posts in Performance
Performance Through Memory Layout
In this post we investigate how we can improve the performance of our memory-intensive codes through changing the memory layout of our performance-critical data structures.
Measuring Memory Subsystem Performance
In this post we introduce a few most common tools used for memory subsystem performance debugging.
Hiding Memory Latency With In-Order CPU Cores OR How Compilers Optimize Your Code
We investigate techniques for hiding memory latency on in-order CPU cores. The same techniques that the compilers employ.
Software Performance and Class Layout
We investigate the secret connection between class layout and software performance. And of course, how to make your software faster.
Horrible Code, Clean Performance
A short tale of how horrible code yields clean performance.
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.
Decreasing the Number of Memory Accesses 1/2
In this post, we are investigating a few common ways to decrease the number of memory accesses in your program.
Frugal Programming: Saving Memory Subsystem Bandwidth
We investigate techniques of frugal programming: how to program so you don’t waste the limited memory resources in your computer system.
Loop Optimizations: interpreting the compiler optimization report
We introduce compiler optimization report, a useful tool if you wish to speed up your program by looking at what the compiler failed to optimize.