/perf-ninja

This is an online course where you can learn and master the skill of low-level performance analysis and tuning.

Primary LanguageC++

Linux Windows

Performance Ninja Class

This is an online course where you can learn to find and fix low-level performance issues, for example CPU cache misses and branch mispredictions. It's all about practice. So we offer you this course in a form of lab assignments and youtube videos. You will spend at least 90% of the time analyzing performance of the code and trying to improve it.

Each lab assignment focuses on a specific performance problem and can take anywhere from 30 mins up to 4 hours depending on your background and the complexity of the lab assignment itself. Once you're done improving the code, you can submit your solution to Github for automated benchmarking and verification.

Before you start working on lab assignments, make sure you read Get Started page and watch the warmup video. Join our discord channel to collaborate with others.

Lab assignments

Support the project

Performance Ninja is in a very much work-in-progress state. We will be adding new lab assignments and videos! The course is free by default, but we ask you to support us on Github Sponsors, Patreon or PayPal. Your sponsorship will speed up adding new lab assignments.

Current sponsors:

  • Pavel Davydov
  • Maya Lekova (@MayaLekova)
  • Aaron St. George (@AaronStGeorge)

Thanks to Mansur Mavliutov (@Mansur) for providing an AMD-based machine for running CI jobs.

Lab authors:

  • Andrew Evstyukhin (@andrewevstyukhin)
  • Ivica Bogosavljevic (@ibogosavljevic)
  • René Rahn (@rrahn)
  • Adam Folwarczny (@adamf88)
  • Jakub Beránek (@Kobzol)
  • Denis Bakhvalov (@dendibakh)

Contributing

We warmly welcome contributions! See Contributing.md for the details.

Please write to dendibakh@gmail.com with suggestions.

Copyright © 2021 by Denis Bakhvalov under Creative Commons license (CC BY 4.0).