A simple, fast, monitoring profiler for Clojure/Script.
Usage: wrap+name interesting body exprs with the `p` macro. Then activate
profiling of these wrapped exprs using the `profiled` or `profile` macros:
(profiled {} (p :my-fn (my-fn))) ; Returns [<body-result> <?pstats>]
(profile {} (p :my-fn (my-fn))) ; Returns <body-result>, dispatches
; ?pstats to any registered handlers.
Extensive facilities are provided for compile-time elision and runtime
filtering.
See the relevant docstrings for more info:
`p`, `profiled`, `profile`, `add-handler!` ; Core API
(p [opts & body] [id & body]) ; e.g. `(p ::my-pid (do-work))`
(profiled [opts & body]) ; e.g. `(profiled {:level 2} (my-fn))`
(profile [opts & body]) ; e.g. `(profiled {:level 2} (my-fn))`
(add-handler! [handler-id ns-pattern handler-fn])
How/where to use this library:
Tufte profiling is highly optimized: even without elision, you can usually
leave profiling enabled in production (e.g. for sampled profiling, or to
detect unusual performance behaviour). Tufte's stats maps are well suited
to programmatic monitoring.
Abbreviations, etc.
- form id = pid = id given in `p`
- group id = gid = id given in `profile`Simple logging handler for integration with Timbre.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |