百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
P

perf-ninja

> 编程语言
开源

这是一门在线课程,您可以在其中学习和掌握低级别性能分析和调优的技能。

3.8K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

这是一门在线课程,您可以在其中学习和掌握低级别性能分析和调优的技能。

# 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. [](https://www.youtube.com/watch?v=2tzdkC6IDbo&list=PLRWO2AL1QAV6bJAU2kgB4xfodGID43Y5d) 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](https://products.easyperf.net/perf-book-2) "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](GetStarted.md) and watch the [warmup video](https://youtu.be/jFRwAcIoLgQ). Lab assignments in this project are implemented in C++. Also, Performance Ninja was ported to: * Rust ([perf-ninja-rs](https://github.com/grahamking/perf-ninja-rs)), thanks to @grahamking. * Zig ([perf-ninja-zig](https://github.com/JonathanHallstrom/perf-ninja-zig)), thanks to @JonathanHallstrom. ## Lab assignments * Core Bound: * [Vectorization 1](labs/core_bound/vectorization_1) * [Vectorization 2](labs/core_bound/vectorization_2) * [Function Inlining](labs/core_bound/function_inlining_1) * [Dependency Chains 1](labs/core_bound/dep_chains_1) * [Dependency Chains 2](labs/core_bound/dep_chains_2) * [Compiler Intrinsics 1](labs/core_bound/compiler_intrinsics_1) * [Compiler Intrinsics 2](labs/core_bound/compiler_intrinsics_2) * [Compiler Intrinsics 3](labs/core_bound/compiler_intrinsics_3) * [Compiler Intrinsics 4](labs/core_bound/compiler_intrinsics_4) * Memory Bound: * [Data Packing](labs/memory_bound/data_packing) * [Loop Interchange 1](labs/memory_bound/loop_interchange_1) * [Loop Interchange 2](labs/memory_bound/loop_interchange_2) * [Loop Tiling](labs/memory_bound/loop_tiling_1) * [SW memory prefetching](labs/memory_bound/swmem_prefetch_1) * [False Sharing](labs/memory_bound/false_sharing_1) * [Huge Pages](labs/memory_bound/huge_pages_1) * [Memory Order Violation](labs/memory_bound/mem_order_violation_1) * [Memory Alignment](labs/memory_bound/mem_alignment_1) * Bad Speculation: * [Branches To CMOVs](labs/bad_speculation/branches_to_cmov_1) * [Conditional Store](labs/bad_speculation/conditional_store_1) * [Replacing Branches With Lookup Tables](labs/bad_speculation/lookup_tables_1) * [C++ Virtual Calls](labs/bad_speculation/virtual_call_mispredict) * CPU Frontend Bound: * Data-Driven optimizations: * Misc: * [Warmup](labs/misc/warmup) * [LTO](labs/misc/lto) * [PGO](labs/misc/pgo) * [Optimize IO](labs/misc/io_opt1) ## 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](https://github.com/sponsors/dendibakh), [Patreon](https://www.patreon.com/dendibakh) or [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TBM3NW8TKTT34¤cy_code=USD&source=url). Your sponsorship will speed up adding new lab assignments. Current sponsors: * Pavel Davydov (@pdavydov108) * Matias Christensen * 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) * Jonathan Hallstrom (@JonathanHallstrom) * Oleg Makovski (@0legmak) * Denis Bakhvalov (@dendibakh) ## Contributing We warmly welcome contributions! See [Contributing.md](Contributing.md) for the details. Please write to [email protected] with suggestions. Copyright © 2025 by Denis Bakhvalov under Creative Commons license (CC BY 4.0).

GitHub Issues· 13 开放

在 GitHub 查看全部
  • #160

    CI pipeline was not executed

    更新于 2026年5月28日
  • #158

    Update cmake requirements

    更新于 2026年5月18日
  • #130

    [Lab Proposal] Add a “Load-store conflicts” Performance Lab

    更新于 2025年12月22日
  • #136

    [Lab Proposal] Non-temporal stores lab

    更新于 2025年9月8日
  • #63

    [Lab proposal] offload computations to a GPU

    更新于 2025年4月5日
  • #108

    compiling against stable google benchmark version

    更新于 2025年3月24日
  • #59

    [PGO] - profiling data out of date

    更新于 2025年3月23日
  • #104

    Unrelated to labs 'python' build issue in CI on Windows system

    更新于 2024年12月23日
  • #60

    Develop Mac versions of solutions for a few labs

    更新于 2022年12月15日
  • #62

    Create a Linux image with preinstalled tools

    enhancement更新于 2022年10月14日

核心特点

  • •Rust (perf-ninja-rs), thanks to @grahamking.
  • •Zig (perf-ninja-zig), thanks to @JonathanHallstrom.
  • •Core Bound:
  • •Vectorization 1
  • •Vectorization 2
  • •Function Inlining
  • •Dependency Chains 1
  • •Dependency Chains 2
  • •Compiler Intrinsics 1
  • •Compiler Intrinsics 2

> 标签

C++

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言