{"id":13532541,"url":"https://github.com/fenbf/AwesomePerfCpp","last_synced_at":"2025-04-01T20:32:12.049Z","repository":{"id":37588039,"uuid":"67161891","full_name":"fenbf/AwesomePerfCpp","owner":"fenbf","description":"A curated list of awesome C/C++ performance optimization resources: talks, articles, books, libraries, tools, sites, blogs. Inspired by awesome.","archived":false,"fork":false,"pushed_at":"2022-09-22T06:48:20.000Z","size":78,"stargazers_count":2419,"open_issues_count":2,"forks_count":260,"subscribers_count":199,"default_branch":"master","last_synced_at":"2025-03-31T21:43:11.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://fenbf.github.io/AwesomePerfCpp/","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fenbf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-01T19:55:17.000Z","updated_at":"2025-03-27T05:10:01.000Z","dependencies_parsed_at":"2023-01-17T15:46:54.934Z","dependency_job_id":null,"html_url":"https://github.com/fenbf/AwesomePerfCpp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fenbf%2FAwesomePerfCpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fenbf%2FAwesomePerfCpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fenbf%2FAwesomePerfCpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fenbf%2FAwesomePerfCpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fenbf","download_url":"https://codeload.github.com/fenbf/AwesomePerfCpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246709923,"owners_count":20821297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:01:11.719Z","updated_at":"2025-04-01T20:32:12.010Z","avatar_url":"https://github.com/fenbf.png","language":"CSS","readme":"\n## Contents\n* [Talks](#Talks)\n* [Articles](#articles)\n* [Sites/Blogs](#sitesblogs)\n* [Tools](#tools)\n* [Libraries](#libraries)\n* [Books](#books)\n* [About](#about)\n\n## Talks\n\n2013:\n\n* Going Native 2013 - [Andrei Alexandrescu, Writing Quick Code in C++, Quickly](https://www.youtube.com/watch?v=MvFj8qo1iuA)\n* Going Native 2013 - [Stephan T. Lavavej, rand() Considered Harmful](https://www.youtube.com/watch?v=LDPMpc-ENqY)\n* Going Native 2013 - [Sean Parent, C++ Seasoning](https://www.youtube.com/watch?v=qH6sSOr-yk8)\n\n2014:\n\n* 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))\n* CppCon 2014 [Andrei Alexandrescu \"Optimization Tips - Mo' Hustle Mo' Problems\"](https://www.youtube.com/watch?v=Qq_WaiwzOtI)\n* CppCon 2014 [Mike Acton \"Data-Oriented Design and C++\" ](https://www.youtube.com/watch?v=rX0ItVEVjHc)\n* CppCon 2014 [Chandler Carruth \"Efficiency with Algorithms, Performance with Data Structures\"](https://www.youtube.com/watch?v=fHNmRkzxHWs)\n\n2015:\n\n* 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))\n* 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))\n* CppCon 2015 [Chandler Carruth, \"Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!\"](https://www.youtube.com/watch?v=nXaxk27zwlk)\n* CppCon 2015 [Bryce Adelstein-Lelbach “Benchmarking C++ Code\"](https://www.youtube.com/watch?v=zWxSZcpeS8Q)\n* Meeting C++ 2015 [Understanding Compiler Optimization - Chandler Carruth - Opening Keynote](https://www.youtube.com/watch?v=FnGCDLhaxKU)\n\n2016:\n\n* ACCU 2016 ['Fastware' - Andrei Alexandrescu](https://www.youtube.com/watch?v=AxnotgLql0k)\n* 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))\n* C++Now 2016 [David Stone: Exceptional Performance](https://www.youtube.com/watch?v=0_FQIDEf7_Q)\n* C++Now 2016 [Jason Turner: Practical Performance Practices](https://www.youtube.com/watch?v=lNnBExDoNSQ)\n* CppCon 2016 [Timur Doumler “Want fast C++? Know your hardware!\" ](https://www.youtube.com/watch?v=BP6NxVxDQIs)\n* CppCon 2016 [Jason Turner “Practical Performance Practices\" ](https://www.youtube.com/watch?v=uzF4u9KgUWI)\n* CppCon 2016 [Chandler Carruth “High Performance Code 201: Hybrid Data Structures\" ](https://www.youtube.com/watch?v=vElZc6zSIXM)\n* CppCon 2016 [McKenney “Beyond the Issaquah Challenge: High-Performance Scalable Complex Updates\"](https://www.youtube.com/watch?v=qcD2Zj9GgI4)\n* CppCon 2016 [D. Dechev \u0026 D. Zhang “High Performance C++ Concurrent Transactional Data Structures\"](https://www.youtube.com/watch?v=uDNb8JL0vv8)\n* CppCon 2016 [Matthew Bentley “Colonies, performance and why you should care\" ](https://www.youtube.com/watch?v=wBER1R8YyGY)\n* CppCon 2016 [Christiaan Pretorius “Cache Optimized Hash Tables” ](https://www.youtube.com/watch?v=aXj_DsIx1xs)\n* CppCon 2016 [Tim Haines “Improving Performance Through Compiler Switches...\" ](https://www.youtube.com/watch?v=w5Z4JlMJ1VQ)\n\n## Articles\n \n* [Three Optimization Tips for C++](https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920/), by Andrei Alexandrescu, @Facebook Engineering\n* [why GNU grep is fast](https://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html)\n* [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/)\n* [Why do CPUs have multiple cache levels?](https://fgiesen.wordpress.com/2016/08/07/why-do-cpus-have-multiple-cache-levels/)\n* [ETW Central](https://randomascii.wordpress.com/2015/09/24/etw-central/) - by RandomASCII\n* [Micro benchmarking libraries for C++ ](http://www.bfilipek.com/2016/01/micro-benchmarking-libraries-for-c.html) - on Bartek's blog\n* [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.\n* [Taking advantage of cache coherence in your programs](http://supercomputingblog.com/optimization/taking-advantage-of-cache-coherence-in-your-programs/)\n* [Gallery of Processor Cache Effects, C#](http://igoro.com/archive/gallery-of-processor-cache-effects/)\n* [How We Beat C++ STL Binary Search](https://academy.realm.io/posts/how-we-beat-cpp-stl-binary-search/)\n* [C++ benchmark – std::vector VS std::list VS std::deque](http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html)\n* [Container Study](http://www.joshbarczak.com/blog/?p=525)\n* [Associative-Container Performance Tests](https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/assoc_performance_tests.html)\n* [C++ Core Guidelines, Performance section](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-performance)\n* [C++ Best Practices, Performance section](https://lefticus.gitbooks.io/cpp-best-practices/content/08-Considering_Performance.html)\n* [That’s Not Normal–the Performance of Odd Floats](https://randomascii.wordpress.com/2012/05/20/thats-not-normalthe-performance-of-odd-floats/)\n* [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/)\n* [The Performance API (PAPI) project](http://icl.cs.utk.edu/papi/overview/index.html)\n* [Roofline Performance Model](https://crd.lbl.gov/departments/computer-science/PAR/research/roofline/)\n* [C++ timing strategies compared (in Windows) ](http://baremetalcode.blogspot.com/2011/10/c-timing-strategies-compared-in-windows.html) - from baremetalcode blog.\n* [Simply about complex - Data Oriented Design by example](https://nikitablack.github.io/2017/02/02/Data-Oriented-Design-by-example.html)\n* [Guide into OpenMP: Easy multithreading programming for C++](http://bisqwit.iki.fi/story/howto/openmp/)\n* [C++ Optimization Bibliography - Kurt Guntheroth's](http://oldhandsblog.blogspot.bg/2016/09/c-optimization-bibliography.html)\n\nManuals:\n\n* [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)\n\n## Sites/Blogs\n\n* [Agner`s CPU blog](http://www.agner.org/optimize/blog/)\n* [Agner's Software optimization resources](http://www.agner.org/optimize/)\n* [The ryg blog](https://fgiesen.wordpress.com/)\n* [Random ASCII](https://randomascii.wordpress.com/)\n* [The Every Computer Performance Blog](https://rwwescott.wordpress.com/)\n* [The Supercomputing Blog](http://supercomputingblog.com/)\n* [Daniel Lemire's blog](http://lemire.me/blog/)\n* [Wojciech Mula's site: 0x80.pl - articles on performance, SIMD](http://0x80.pl/articles/index.html)\n* [Bartek's programming blog](http://www.bfilipek.com)\n\n## Tools\n\n### Free\n\n* [AMD Code XL](http://developer.amd.com/tools-and-sdks/opencl-zone/codexl/)\n* [Very Sleepy](http://www.codersnotes.com/sleepy/)\n* [Proffy](http://www.pauldoo.com/proffy/)\n* [Windows Performance Toolkit - XPERF](https://msdn.microsoft.com/en-us/library/hh162945.aspx)\n* [Performance and Diagnostic Tools in Visual Studio 2015](https://msdn.microsoft.com/en-us/magazine/dn973013.aspx)\n* [Valgrind](http://valgrind.org/)\n* [TAU Performance System](http://www.cs.uoregon.edu/research/tau/home.php)\n* [Google Performance Tools (gperftools)](https://github.com/gperftools/gperftools)\n* [Linux perf tools](https://perf.wiki.kernel.org/index.php/Tutorial)\n* [NVIDIA Visual Profiler](https://developer.nvidia.com/nvidia-visual-profiler)\n* [Qualcomm Snapdragon Profiler](https://developer.qualcomm.com/software/snapdragon-profiler)\n* [Oracle Solaris Studio Performance Analyzer](http://www.oracle.com/technetwork/server-storage/solarisstudio/features/performance-analyzer-2292312.html)\n* [OProfile](http://oprofile.sourceforge.net/about/) for Linux\n\n### Paid\n\n* [Intel® VTune™](https://software.intel.com/en-us/intel-vtune-amplifier-xe)\n* [Intel® Vectorization and Threading Advisor](https://software.intel.com/en-us/intel-advisor-xe)\n* [AQtime Pro, from SmartBear](https://smartbear.com/product/aqtime-pro/overview/)\n* [GlowCode](http://www.glowcode.com/summary1_gc.htm)\n* [WonderLeak](https://www.relyze.com/wonderleak_overview.html) - A high performance Windows heap and handle allocation profiler.\n\n## Libraries\n\n* [Celero micro-benchmarking library](https://github.com/DigitalInBlue/Celero)\n* [Nonius library](https://nonius.io)\n* [Hayai micro benchmarking library](https://github.com/nickbruun/hayai), [into article](https://bruun.co/2012/02/07/easy-cpp-benchmarking)\n* [Google benchmark library](https://github.com/google/benchmark)\n\n## Books\n\n* [PDF: optimizing C++](http://www.agner.org/optimize/optimizing_cpp.pdf) - by Agner Fog. FREE\n* [Optimizing C++, WikiBooks](https://en.wikibooks.org/wiki/Optimizing_C%2B%2B) - FREE\n* The Software Optimization Cookbook: High Performance Recipes for IA-32 Platforms, 2nd Edition\n* Video Game Optimization, Eric Preisz\n* Optimized C++: Proven Techniques for Heightened Performance, Kurt Guntheroth\n* Power and Performance: Software Analysis and Optimization, Jim Kukunas\n* Systems Performance: Enterprise and the Cloud, Brendan Gregg \n* Every Computer Performance Book, Bob Wescott \n* C++ Concurrency in Action, Second Edition, Anthony Williams\n\n## About\nThis 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.\n\n## License\n\n[![Creative Commons License](http://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)\n\nThis work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\n","funding_links":[],"categories":["Other Awesome Projects","Awesome-Game","Awesome","CSS","Other Lists","Themed Directories"],"sub_categories":["TeX Lists"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffenbf%2FAwesomePerfCpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffenbf%2FAwesomePerfCpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffenbf%2FAwesomePerfCpp/lists"}