Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fenbf/AwesomePerfCpp

A curated list of awesome C/C++ performance optimization resources: talks, articles, books, libraries, tools, sites, blogs. Inspired by awesome.
https://github.com/fenbf/AwesomePerfCpp

List: AwesomePerfCpp

Last synced: 1 day ago
JSON representation

A curated list of awesome C/C++ performance optimization resources: talks, articles, books, libraries, tools, sites, blogs. Inspired by awesome.

Awesome Lists containing this project

README

        

## Contents
* [Talks](#Talks)
* [Articles](#articles)
* [Sites/Blogs](#sitesblogs)
* [Tools](#tools)
* [Libraries](#libraries)
* [Books](#books)
* [About](#about)

## Talks

2013:

* Going Native 2013 - [Andrei Alexandrescu, Writing Quick Code in C++, Quickly](https://www.youtube.com/watch?v=MvFj8qo1iuA)
* Going Native 2013 - [Stephan T. Lavavej, rand() Considered Harmful](https://www.youtube.com/watch?v=LDPMpc-ENqY)
* Going Native 2013 - [Sean Parent, C++ Seasoning](https://www.youtube.com/watch?v=qH6sSOr-yk8)

2014:

* code::dive conference 2014 [Scott Meyers: Cpu Caches and Why You Care](https://www.youtube.com/watch?v=WDIkqP4JbkE)([slides](http://www.aristeia.com/TalkNotes/codedive-CPUCachesHandouts.pdf))
* CppCon 2014 [Andrei Alexandrescu "Optimization Tips - Mo' Hustle Mo' Problems"](https://www.youtube.com/watch?v=Qq_WaiwzOtI)
* CppCon 2014 [Mike Acton "Data-Oriented Design and C++" ](https://www.youtube.com/watch?v=rX0ItVEVjHc)
* CppCon 2014 [Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"](https://www.youtube.com/watch?v=fHNmRkzxHWs)

2015:

* code::dive conference 2015 [Andrei Alexandrescu - Writing Fast Code I](https://www.youtube.com/watch?v=vrfYLlR8X8k) ([slides](http://codedive.pl/wp-content/uploads/2016/01/FastCode-handouts.pdf))
* code::dive conference 2015 [Andrei Alexandrescu - Writing Fast Code II](https://www.youtube.com/watch?v=9tvbz8CSI8M) ([slides](http://codedive.pl/wp-content/uploads/2016/01/FastCode-handouts.pdf))
* CppCon 2015 [Chandler Carruth, "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!"](https://www.youtube.com/watch?v=nXaxk27zwlk)
* CppCon 2015 [Bryce Adelstein-Lelbach “Benchmarking C++ Code"](https://www.youtube.com/watch?v=zWxSZcpeS8Q)
* Meeting C++ 2015 [Understanding Compiler Optimization - Chandler Carruth - Opening Keynote](https://www.youtube.com/watch?v=FnGCDLhaxKU)

2016:

* ACCU 2016 ['Fastware' - Andrei Alexandrescu](https://www.youtube.com/watch?v=AxnotgLql0k)
* C++Now 2016 [Timur Doumler: C++ Performance in Practice: Align, Vectorise, Cache, Jump!](https://www.youtube.com/watch?v=c-hZpChQKe0) ([slides](https://github.com/boostcon/cppnow_presentations_2016/blob/master/03_friday/cpp_performance_in_practice_align_vectorise_cache_jump.pdf))
* C++Now 2016 [David Stone: Exceptional Performance](https://www.youtube.com/watch?v=0_FQIDEf7_Q)
* C++Now 2016 [Jason Turner: Practical Performance Practices](https://www.youtube.com/watch?v=lNnBExDoNSQ)
* CppCon 2016 [Timur Doumler “Want fast C++? Know your hardware!" ](https://www.youtube.com/watch?v=BP6NxVxDQIs)
* CppCon 2016 [Jason Turner “Practical Performance Practices" ](https://www.youtube.com/watch?v=uzF4u9KgUWI)
* CppCon 2016 [Chandler Carruth “High Performance Code 201: Hybrid Data Structures" ](https://www.youtube.com/watch?v=vElZc6zSIXM)
* CppCon 2016 [McKenney “Beyond the Issaquah Challenge: High-Performance Scalable Complex Updates"](https://www.youtube.com/watch?v=qcD2Zj9GgI4)
* CppCon 2016 [D. Dechev & D. Zhang “High Performance C++ Concurrent Transactional Data Structures"](https://www.youtube.com/watch?v=uDNb8JL0vv8)
* CppCon 2016 [Matthew Bentley “Colonies, performance and why you should care" ](https://www.youtube.com/watch?v=wBER1R8YyGY)
* CppCon 2016 [Christiaan Pretorius “Cache Optimized Hash Tables” ](https://www.youtube.com/watch?v=aXj_DsIx1xs)
* CppCon 2016 [Tim Haines “Improving Performance Through Compiler Switches..." ](https://www.youtube.com/watch?v=w5Z4JlMJ1VQ)

## Articles

* [Three Optimization Tips for C++](https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920/), by Andrei Alexandrescu, @Facebook Engineering
* [why GNU grep is fast](https://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html)
* [Hash Functions all the way down](http://aras-p.info/blog/2016/08/02/Hash-Functions-all-the-way-down/) from Aras-P, and the follow up [here](http://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/)
* [Why do CPUs have multiple cache levels?](https://fgiesen.wordpress.com/2016/08/07/why-do-cpus-have-multiple-cache-levels/)
* [ETW Central](https://randomascii.wordpress.com/2015/09/24/etw-central/) - by RandomASCII
* [Micro benchmarking libraries for C++ ](http://www.bfilipek.com/2016/01/micro-benchmarking-libraries-for-c.html) - on Bartek's blog
* [How to start with Software Optimization](http://www.bfilipek.com/2014/07/flexible-particle-system-how-to-start.html), from Flexible Particle Experiments series, Bartek's blog.
* [Taking advantage of cache coherence in your programs](http://supercomputingblog.com/optimization/taking-advantage-of-cache-coherence-in-your-programs/)
* [Gallery of Processor Cache Effects, C#](http://igoro.com/archive/gallery-of-processor-cache-effects/)
* [How We Beat C++ STL Binary Search](https://academy.realm.io/posts/how-we-beat-cpp-stl-binary-search/)
* [C++ benchmark – std::vector VS std::list VS std::deque](http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html)
* [Container Study](http://www.joshbarczak.com/blog/?p=525)
* [Associative-Container Performance Tests](https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/assoc_performance_tests.html)
* [C++ Core Guidelines, Performance section](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-performance)
* [C++ Best Practices, Performance section](https://lefticus.gitbooks.io/cpp-best-practices/content/08-Considering_Performance.html)
* [That’s Not Normal–the Performance of Odd Floats](https://randomascii.wordpress.com/2012/05/20/thats-not-normalthe-performance-of-odd-floats/)
* [gprof, Valgrind and gperftools – an evaluation of some tools for application level CPU profiling on Linux](http://gernotklingler.com/blog/gprof-valgrind-gperftools-evaluation-tools-application-level-cpu-profiling-linux/)
* [The Performance API (PAPI) project](http://icl.cs.utk.edu/papi/overview/index.html)
* [Roofline Performance Model](https://crd.lbl.gov/departments/computer-science/PAR/research/roofline/)
* [C++ timing strategies compared (in Windows) ](http://baremetalcode.blogspot.com/2011/10/c-timing-strategies-compared-in-windows.html) - from baremetalcode blog.
* [Simply about complex - Data Oriented Design by example](https://nikitablack.github.io/2017/02/02/Data-Oriented-Design-by-example.html)
* [Guide into OpenMP: Easy multithreading programming for C++](http://bisqwit.iki.fi/story/howto/openmp/)
* [C++ Optimization Bibliography - Kurt Guntheroth's](http://oldhandsblog.blogspot.bg/2016/09/c-optimization-bibliography.html)

Manuals:

* [Intel® 64 and IA-32 Architectures Optimization Reference Manual](http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html)

## Sites/Blogs

* [Agner`s CPU blog](http://www.agner.org/optimize/blog/)
* [Agner's Software optimization resources](http://www.agner.org/optimize/)
* [The ryg blog](https://fgiesen.wordpress.com/)
* [Random ASCII](https://randomascii.wordpress.com/)
* [The Every Computer Performance Blog](https://rwwescott.wordpress.com/)
* [The Supercomputing Blog](http://supercomputingblog.com/)
* [Daniel Lemire's blog](http://lemire.me/blog/)
* [Wojciech Mula's site: 0x80.pl - articles on performance, SIMD](http://0x80.pl/articles/index.html)
* [Bartek's programming blog](http://www.bfilipek.com)

## Tools

### Free

* [AMD Code XL](http://developer.amd.com/tools-and-sdks/opencl-zone/codexl/)
* [Very Sleepy](http://www.codersnotes.com/sleepy/)
* [Proffy](http://www.pauldoo.com/proffy/)
* [Windows Performance Toolkit - XPERF](https://msdn.microsoft.com/en-us/library/hh162945.aspx)
* [Performance and Diagnostic Tools in Visual Studio 2015](https://msdn.microsoft.com/en-us/magazine/dn973013.aspx)
* [Valgrind](http://valgrind.org/)
* [TAU Performance System](http://www.cs.uoregon.edu/research/tau/home.php)
* [Google Performance Tools (gperftools)](https://github.com/gperftools/gperftools)
* [Linux perf tools](https://perf.wiki.kernel.org/index.php/Tutorial)
* [NVIDIA Visual Profiler](https://developer.nvidia.com/nvidia-visual-profiler)
* [Qualcomm Snapdragon Profiler](https://developer.qualcomm.com/software/snapdragon-profiler)
* [Oracle Solaris Studio Performance Analyzer](http://www.oracle.com/technetwork/server-storage/solarisstudio/features/performance-analyzer-2292312.html)
* [OProfile](http://oprofile.sourceforge.net/about/) for Linux

### Paid

* [Intel® VTune™](https://software.intel.com/en-us/intel-vtune-amplifier-xe)
* [Intel® Vectorization and Threading Advisor](https://software.intel.com/en-us/intel-advisor-xe)
* [AQtime Pro, from SmartBear](https://smartbear.com/product/aqtime-pro/overview/)
* [GlowCode](http://www.glowcode.com/summary1_gc.htm)
* [WonderLeak](https://www.relyze.com/wonderleak_overview.html) - A high performance Windows heap and handle allocation profiler.

## Libraries

* [Celero micro-benchmarking library](https://github.com/DigitalInBlue/Celero)
* [Nonius library](https://nonius.io)
* [Hayai micro benchmarking library](https://github.com/nickbruun/hayai), [into article](https://bruun.co/2012/02/07/easy-cpp-benchmarking)
* [Google benchmark library](https://github.com/google/benchmark)

## Books

* [PDF: optimizing C++](http://www.agner.org/optimize/optimizing_cpp.pdf) - by Agner Fog. FREE
* [Optimizing C++, WikiBooks](https://en.wikibooks.org/wiki/Optimizing_C%2B%2B) - FREE
* The Software Optimization Cookbook: High Performance Recipes for IA-32 Platforms, 2nd Edition
* Video Game Optimization, Eric Preisz
* Optimized C++: Proven Techniques for Heightened Performance, Kurt Guntheroth
* Power and Performance: Software Analysis and Optimization, Jim Kukunas
* Systems Performance: Enterprise and the Cloud, Brendan Gregg
* Every Computer Performance Book, Bob Wescott
* C++ Concurrency in Action, Second Edition, Anthony Williams

## About
This list was started by Bartlomiej Filipek ([@fenbf](https://twitter.com/fenbf)). If you like to help please read CONTRIBUTING.md instructions and just make a pull request to this repo.

## License

[![Creative Commons License](http://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)

This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).