[HN Gopher] FunctionTrace: Graphical Python Profiler
___________________________________________________________________
FunctionTrace: Graphical Python Profiler
Author : alex_hirner
Score : 66 points
Date : 2023-07-05 19:22 UTC (3 hours ago)
(HTM) web link (functiontrace.com)
(TXT) w3m dump (functiontrace.com)
| BeefySwain wrote:
| 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)
| tempest_ wrote:
| Python packaging is painful.
|
| They will probably get a build system going so wheels can be
| used eventually.
| MistaIA wrote:
| How about Jupiter Notebooks?
| jzelinskie wrote:
| Whatever happened to scalene?
| TkTech wrote:
| Nothing at all, I was using it just fine earlier today :)
| not-my-account wrote:
| Functiontrace is very good! I've used it a lot for hammering down
| bottlenecks, and it is easy to drop in to a script
| megaserg wrote:
| 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.
| kapilvt wrote:
| https://github.com/benfred/py-spy is also really nice, and has an
| actual oss license.
| Dork1234 wrote:
| Is this something that could be made to work with MicroPython?
| teh_matt wrote:
| Most of the work is done via a C extension, which I suspect
| would be incompatible with MicroPython. The same techniques are
| presumably applicable, depending on how many interesting hooks
| MicroPython exposes.
| scottwick wrote:
| 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.
|
| [1] : https://github.com/joerick/pyinstrument [2] :
| https://github.com/benfred/py-spy
| Veserv wrote:
| It uses FEE (function entry/exit) tracing so it generates a
| full execution trace of all functions called during your run
| like "History" [1], the C/C++ tracing profiler it was based on.
|
| You can then post-process that trivially to get low resolution
| aggregate information like normal statistical/sampling
| profilers generate.
|
| [1] https://www.ghs.com/products/MULTI_IDE.html
| kapilvt wrote:
| compare to pyspy, which is out of process and reads process
| memory to reconstruct stack frames as a sampler, which means
| marginal overhead for the program, re safer to use in prod.
| it would be interesting to see a function entry/exit on linux
| via epbf attached to USDT.
| Veserv wrote:
| They claim tracing overhead is <10%. This is very
| believable, and actually frankly seems kind of high. You
| can do a full execution trace of a C program for a similar
| low double digit percent overhead and Python is usually on
| the order of 10x slower, so naively you would assume like
| 1% overhead.
|
| I assume the hooks Python makes available are probably just
| kind of bad for this use case and they do not have access
| to a proper high speed log.
| teh_matt wrote:
| Yeah, it tends to be low single digit percents, but you
| can get some pessimal behavior if you have enough tiny
| functions because the overhead of what Cpython exposes
| starts becoming large. Our "benchmark" where the 10%
| comes from is tensorflow, which is overwhelmingly tiny
| functions and no sustained io/individual functions.
| RockRobotRock wrote:
| looks great. wish jetbrains implemented this
| kijeda wrote:
| The license is a bit perplexing at
| https://gitlab.com/mbryant/functiontrace/-/blob/master/LICEN...
|
| 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.
| teh_matt wrote:
| I'm not sure why the Gitlab UI shows Apache 2.0, but PPL3.0 is
| the correct license (and is in LICENSE.md).
| xg15 wrote:
| I don't see any pricing page or anything. So if I'm a business
| and after the 30 days decide I'm sold on it, what exactly do I
| do?
| zorgmonkey wrote:
| The website (https://functiontrace.com/) mentions that dual
| licensing is available at the bottom of the page, so my best
| guess would be that you need to contact the author for
| pricing details.
| xg15 wrote:
| ah, that makes sense. Thanks!
| dang wrote:
| Related:
|
| _Building FunctionTrace, a graphical Python profiler_ -
| https://news.ycombinator.com/item?id=24175395 - Aug 2020 (4
| comments)
| bgirard wrote:
| 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.
___________________________________________________________________
(page generated 2023-07-05 23:00 UTC)