It's really cool to see the Firefox Profiler UI reused in new projects. I'm biased having worked on it, but it's a very powerful visualization tool for complex multi-threaded performance data.
Is there something about the actual profiler that differs from existing tools like pyinstrument [1] or py-spy [2]? I know pyinstrument has various output options and I wonder if it could potentially output something readable by the Firefox Profiler tool.<p>[1] : <a href="https://github.com/joerick/pyinstrument">https://github.com/joerick/pyinstrument</a>
[2] : <a href="https://github.com/benfred/py-spy">https://github.com/benfred/py-spy</a>
The license is a bit perplexing at <a href="https://gitlab.com/mbryant/functiontrace/-/blob/master/LICENSE.md" rel="nofollow noreferrer">https://gitlab.com/mbryant/functiontrace/-/blob/master/LICEN...</a><p>It says it is licensed under Apache License 2.0, but also under "Prosperity Public License 3.0.0" which limits use for a commercial purpose to 30 days.
<a href="https://github.com/benfred/py-spy">https://github.com/benfred/py-spy</a> is also really nice, and has an actual oss license.
If I'm understanding this correctly you need to use Cargo to install part of this. That makes it a lot harder to start using as someone in the Python ecosystem (who is not also in the Rust ecosystem)
It's nice to see how many different approaches to profiling there are these days in Python. I work on another (commercial but with free plan) Python profiler, Sciagraph: <a href="https://sciagraph.com" rel="nofollow noreferrer">https://sciagraph.com</a>.<p>The main use case is data science and other long-running batch jobs. Some differences:<p>1. It does memory profiling at basically no performance overhead; sounds like for FunctionTrace it's high overhead so off by default. And it catches _all_ memory allocations, not just Python API ones. This is based on using sampling, so it's not useful for profiling tiny functions (but for data science/scientific computing it'll work just fine).<p>2. Uses sampling for performance profiling, unlike FunctionTrace. Again, perfectly fine for any non-micro-benchmark data science program.<p>3. Also has a timeline view, without having to upload your data anywhere.<p>4. No native stacks yet.<p>5. Shows you if you're using CPU or I/O for every particular sample.
Looks like it supports native stack as well, great! Most bottlenecks in seriously performance-sensitive programs are in the native code, which makes built-in tools like cProfile hardly useful.
It's a shame there isn't any support for coroutines. I'm really hoping some profiling tool that comes along to handle them + threads/processes.