# AwesomePerfCpp **Repository Path**: swrd/AwesomePerfCpp ## Basic Information - **Project Name**: AwesomePerfCpp - **Description**: A curated list of awesome C/C++ performance optimization resources: talks, articles, books, libraries, tools, sites, blogs. Inspired by awesome. https://fenbf.github.io/AwesomePerfCpp/ - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://github.com/fenbf/AwesomePerfCpp - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-03-06 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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://realm.io/news/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) ## 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 ## 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/).