GithubHelp home page GithubHelp logo

doytsujin / perf-ninja Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dendibakh/perf-ninja

0.0 1.0 0.0 52.12 MB

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

Shell 0.06% C++ 47.97% Python 8.84% C 37.97% Lua 4.04% CMake 0.99% Batchfile 0.13%

perf-ninja's Introduction

Linux Windows Windows Linux

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.

Performance Ninja is supported on Linux, Windows, and Mac, and is run on all the recent HW including Intel's 12th-gen Alderlake, AMD's Zen3, and Apple's M1 CPUs. You can observe the effect of your optimizations on a variety of modern platforms.

Prerequisites: basic C++ skills are an absolute must-have for the course. Denis' book "Performance Analysis and Tuning on Modern CPUs" is recommended as an introduction to performance analysis basics. Knowledge of compilers, computer architecture, and the ability to read assembly code is a plus.

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 in this project are implemented in C++. If you're more comfortable with Rust, perf-ninja was also ported to Rust here, thanks to @grahamking.

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)
  • Jakub Gałecki (@kubagalecki)
  • Denis Bakhvalov (@dendibakh)

Contributing

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

Please write to [email protected] with suggestions.

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

perf-ninja's People

Contributors

dendibakh avatar kubagalecki avatar aharrison24 avatar chris0x44 avatar efferifick avatar kobzol avatar stephandollberg avatar ilitov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.