A NeoVim plugin that annotates source code with profiling data from perf, LuaJIT, and other profilers to visualize performance bottlenecks.
PerfAnno is a NeoVim plugin written in Lua that integrates profiling data directly into the editor. It reads output from profilers like perf and LuaJIT, then annotates source code lines with performance metrics such as CPU cycles, cache misses, and branch mispredictions, allowing developers to visually identify hotspots and explore call graphs without leaving their coding environment.
NeoVim users who are performance-tuning applications in languages like C, C++, Lua, or Python, particularly those working on multi-threaded applications or needing detailed call graph analysis.
Developers choose PerfAnno because it brings profiler data directly into NeoVim, enabling real-time, context-aware performance analysis with features like interactive call graph navigation, multi-profiler support, and customizable annotations, eliminating the need to switch between tools.
NeoVim lua plugin that annotates source code with profiling information from perf, LuaJIT, or other profilers.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Directly annotates source code lines in NeoVim with performance metrics like CPU cycles, eliminating the need to switch between profiler and editor for real-time analysis.
Works with multiple profilers including perf (call-graph and flat modes), LuaJIT, and any tool outputting flamegraph format, making it versatile for C, C++, Lua, and Python projects.
Integrates with Telescope or fzf-lua to jump to hottest lines and explore callers/callees interactively, with hotkeys for dynamic navigation within finders.
Allows configuration of line highlights and annotation formats via Lua, enabling users to tailor displays to their color schemes and preferences, as shown in the example config.
Requires manual configuration of highlights, keybindings, and dependencies like Telescope or fzf-lua for full functionality, adding overhead for new users beyond simple plugin installation.
Features such as caching are labeled experimental, and commands like :PerfCycleFormat have known issues (e.g., resetting relative annotations), reducing reliability for some workflows.
Call graph mode may require recent perf versions, and loading large perf data can be slow; the plugin also depends on accurate debug symbols for precise line annotations, which can be a hurdle.