awesome-performance
reading list on software performance
https://github.com/olest/awesome-performance
Last synced: 6 days ago
JSON representation
-
Algorithms and data structures
- Bitwise binary search
- Sort benchmark
- Open Data Structures - an open content textbook
- Algorithms by Jeff Erickson
- Colony - An unordered bucket-like data container providing fast iteration/insertion/erasure
- Novel base64 implementation using lookup tables
- Data Structures in Practice - A Hardware-Aware Approach for System Software Engineers
- One Billion Row Challenge - C++ Implementation
-
Benchmarks
- Mastering C++ with Google Benchmark
- Open benchmarking
- Folly - benchmarks
- Godbolt's Law
- Cinebench 2024: Reviewing the Benchmark
- All Measurements are Wrong - Guerilla Aphorisms
- bonnie++
- AnandTech 2021 SSD Benchmark Suite
- Celero
- nanobench
- Flexible I/O Tester
- sysbench - scriptable database and system performance benchmark
- A cross-platform C library to retrieve CPU features
- An Extensive Benchmark of C and C++ Hash Tables
- comprehensive set of IO benchmarks for Linux and OS X
- All Measurements are Wrong - Guerilla Aphorisms
- hyperfine - a command-line benchmarking tool in Rust
- Cinebench 2024: Reviewing the Benchmark
- Performance and Benchmarking - Beyond the Bottleneck: From Classic Systems to Modern AI and HPC
-
Blogs
- Brendan Gregg's Blog
- Johnny's Software Lab
- Daniel Lemire's blog
- JabPerf
- EasyPerf - Denis Bakhvalov
- Software Bits Newsletter
- Abseil.io - Performance Tips of Week
- Agner Fog - Software optimization resources
- Wojciech Muła - blog
- MattPD's C++ links: performance tools
- Computer, Enhance!
- Performance Engineering For Parallel Applications
- strlcpy and how CPUs can defy common sense
- n0derunner - platform performance
- Israel Ogbole : Profile-Guided Optimization: A Hands-On Guide to Reducing Computational Wastage
- Ahmad Yasin : perf-tools
- Chris Feilbach's Blog
- Confessions of a Code Addict
- John Farrier - For Software Engineers
- justinblank.com
- marek.ai
- Martin Ayvazyan - Advanced C++ Optimization Techniques
- Modern Hardware Numbers for System Design Interviews
- Performance Engineers Digest
- Redpanda blog
- The Every Computer Performance Blog
- uops.info
- Wojciech Muła - blog
- purplesyringa - Why performance optimization is hard work
- daniellockyer/awesome-performance
- Abseil.io - Performance Hints
- A Short History of Performance Engineering
- Software Bits Newsletter
- John Farrier - For Software Engineers
-
Books
-
Compilers
-
Concurrency
-
CPU
-
GPU acceleration
-
I/O
-
Journal articles or technical reports
-
Lectures or conference talks
- Performance Engineering of Software Systems - MIT Open Course Ware
- Brendan Gregg: Kernel Recipes 2023 - Fast by Friday: Why Kernel Superpowers are Essential
- Casey Muratori: Simple Code, High Performance
- CppCon 2014: Chander Charruth on 'Efficiency with Algorithms, Performance with Data Structures'
- CppCon 2014: Mike Acton on 'Data-Oriented Design'
- Kris Jusiak : Performance is not a number
- Software Optimizations Become Simple with Top-Down Analysis on Intel Skylake - Ahmad Yasin
- CppCon 2014: Mike Acton on 'Data-Oriented Design'
- Visualizing Performance - The Developers’ Guide to Flame Graphs • Brendan Gregg • YOW! 2022
-
Libraries
-
Machine learning
-
Memory
- Are you sure you want to use MMP in your DBMS?
- Sam on Memory allocation
- Red Hat: Huge pages and transparent huge pages
- Huge pages are a good idea
- Determining whether an application has poor cache performance
- Transparent huge pages
- Linux weekly news on Transparent Huge pages
- Using Huge Pages on Linux
- Intel Cache Allocation Technology
- JVM field guide memory
- What Every Programmer Should Know About Memory
- Latency numbers every programmer should know
- Testing Memory Allocators
- Dmalloc - Debug Malloc Library
- Memory management reading list
- malloc_count - Tools for Runtime Memory Usage Analysis and Profiling
- Sneaky (transparent) huge pages
- SRE deep dive into page cache
- Memory Allocation Strategies - Part 1
- Garbage Collection for Systems Programmers
- TCMalloc and RocksDB
- snmalloc high-performance allocator
- Heaptrack
- Pagemon - browse the memory map of an active running process
- How Does the Memory Management Unit (MMU) Work with the Unix/Linux Kernel?
- Poul-Henning Kamp - Malloc(3) in modern Virtual Memory environments
- Testing Memory Allocators
- Dan Luu - Malloc tutorial
- Cache simulator
-
Operating systems
- Phoronix - Linux Hardware Reviews
- Operating Systems: Three Easy Pieces
- 4Kb page size is obsolete
- On the cost of syscalls
- io_uring explained (unzip.dev)
- linux-insides
- Interactive map of the Linux kernel
- Controlling the page cache
- How to troubleshoot high I/O wait time in Linux
- Unwinding the stack the hard way
- Learning low-level programming and systems programming
- Modern Microprocessors A 90-Minute Guide!
- vock - lightweight, wrapper-based kernel coverage viewer
- CMU: Introduction to Computer Systems
-
Profiling
- How to enable performance counters in google benchmark
- Laurence Tratt - four kinds of optimization
- firefox profiler
- Advanced usage of last branch records
- Performance Myths and Continuous Profiling
- strace cheatsheet
- 0x.tools - X-Ray vision for Linux systems
- Tracy - a hybrid frame and sampling profiler for games and other applications
- uftrace : function call graph tracer for C, C++, Rust and Python
- Memray : memory profiler for Python
- pmu tools : tools and libraries for profile collection and performance analysis on Intel CPUs
- Coz: Finding Code that Counts with Causal Profiling
- Bloaty: a size profiler for binaries
- Terminal flame graph
- Flameshow (Terminal Flamegraph viewer)
- GWPSan: Sampling-Based Sanitizer Framework
- magic-trace
- health-check
- Performance tuning tutorial
- aperf - A CLI tool to gather performance data and visualize using HTML graphs
- hotpath - find and profile bottlenecks in Rust
- MTuner: C/C++ memory profiler and memory leak finder for Windows, PlayStation 4 and 3, Android and other platforms
- Useful web sites about the Linux perf tools
- llvm-mca - LLVM Machine Code Analyzer
-
Programming languages
-
SIMD
-
Static code analysis
-
Tools & Observability
Programming Languages
Categories
Blogs
34
Memory
29
Profiling
24
Benchmarks
19
Operating systems
14
GPU acceleration
10
Lectures or conference talks
9
Algorithms and data structures
8
Books
7
Tools & Observability
6
Compilers
4
Journal articles or technical reports
4
Libraries
3
SIMD
3
Concurrency
3
Programming languages
3
I/O
2
Static code analysis
2
CPU
1
Machine learning
1
Sub Categories
Keywords
benchmark
5
performance
5
linux
3
profiling
3
simd
3
profiler
3
performance-analysis
3
cpu
2
freebsd
2
cpp11
2
macos
2
flamegraph
2
tracing
2
neon
2
sse2
2
c
2
cpp
2
rust
2
mysql
1
unicode
1
high-performance
1
micro-benchmarks
1
transcoding
1
risc-v
1
ppc64le
1
base64
1
avx2
1
avx-512
1
oltp
1
sysbench
1
postgresql
1
visual-studio
1
console
1
lua
1
luajit
1
code-quality
1
java
1
objective-c
1
static-analysis
1
static-code-analysis
1
cli
1
command-line
1
terminal
1
tool
1
causal-inference
1
optimization
1
performance-engineering
1
benchmark-tests
1
c-plus-plus
1
celero
1