A profiling library for löve games that records time and memory usage via manual code annotations.
jprof is a profiling library specifically designed for löve (Love2D) applications. It enables developers to analyze performance and memory consumption by requiring manual annotation of code sections, addressing the unreliability of standard Lua profiling hooks in luajit.
Love2D game developers who need accurate performance and memory profiling for their Lua applications, particularly those using luajit where standard debug hooks fail.
Developers choose jprof because it provides reliable, low-overhead profiling for löve by avoiding unreliable debug hooks and using explicit annotations, with features like zero-cost disabling for release builds and an interactive viewer for data analysis.
Profiling library/tool for löve
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
jprof bypasses unreliable debug hooks in luajit by using manual zone annotations, ensuring profiling works correctly in Love2D where standard methods fail, as highlighted in the README.
When the PROF_CAPTURE flag is false, profiling functions become no-ops, allowing annotations to remain in production code without any runtime overhead, a key feature for performance-sensitive games.
Includes a dedicated Love2D application that visualizes data with flame graphs, frame averaging, and mode toggles between time and memory views, providing detailed insights into performance bottlenecks.
Can stream profiling data live to the viewer via prof.connect(), enabling developers to monitor performance changes dynamically during development sessions.
Developers must manually insert push and pop calls around code blocks, which adds development time and complexity, and mismatched zones can cause errors, as warned in the README.
Both the profiler and viewer are designed specifically for Love2D, making it unsuitable for profiling Lua code in other frameworks or environments, limiting its versatility.
As noted in the README, jprof generates its own garbage during real-time profiling, which can dominate and skew memory consumption measurements, reducing reliability for live analysis.