cider

oyakushev 2024-09-02T07:57:05.770079Z

Dear CIDER users, do any of you use cider-profile functionality (https://docs.cider.mx/cider/debugging/profiling.html)? Choose if you do, if you never heard of it, and if you are aware of it but never use it. For those who do, I would be grateful if you specified in the thread why you use it over full-fledged profilers (clj-async-profiler, JMC, VisualVM, YourKit, etc.).

➖ 13
➕ 2
❓ 17
🙌 1
tatut 2024-09-02T08:30:41.338209Z

I’ve tried clj-async-profiler, but usually I start with guesswork and sprinkling some time calls

👍 1
Macroz 2024-09-02T09:11:11.942499Z

I mostly use manual time or clj-async-profiler now for more complicated situations. I like the clarity of the report in the latter. It generally feels that CIDER features need a bit of up-front learning (keyboard shortcuts etc.) and often are so text-focused (Emacs standard). For a report I like a bit more styling and/or graphs. I do use the debugger in CIDER and sometimes wish for a slightly enhanced pretty printing experience (for a kind of watch what is going on in the app DB situation and then drill-down/explore).

🙏 1
Stig Brautaset 2024-09-02T09:17:30.319899Z

I tend to use clj-async-profiler (and criterium for more fine-grained benchmarking)

👍 1
jumar 2024-09-02T11:07:25.087339Z

I used it a few times but it has been rare. I thought it was a nice quick way to get a rough idea of functions performance

✅ 2
2024-09-02T11:21:57.058409Z

I also use clj-async-profiler and criterium instead

respatialized 2024-09-02T13:19:13.144999Z

if cider-profile was made "pluggable" so you can delegate the sampling to a profiler of your choice (e.g. via multimethods or some other extension mechanism) it might see more use because other sampling tools are used more extensively. however, having used it a handful of times, the cider-profile-report buffer isn't much of a value-add over printing to the REPL (in one way it's worse: it gets updated in place, which can obscure the effects of changes), so it's not clear it'd be worth the effort to introduce an extension mechanism.

oyakushev 2024-09-02T14:00:26.663979Z

@afoltzm Which sampling profilers would you use if this was possible? Is it Tufte, for example?

respatialized 2024-09-02T14:38:09.515659Z

I use Tufte and clj-async-profiler most frequently.

Felix Dorner 2024-09-02T09:06:28.609589Z

I recently started writing complicated code (..damn..) so I started using cider-debug-defun-at-point . Works nicely, but how do I get rid of the breakpoint once I'm done with the debugging?

😄 1
2024-09-02T09:07:58.591599Z

Evaluate the function normally.

Felix Dorner 2024-09-02T09:08:26.798459Z

facepalm

Felix Dorner 2024-09-02T09:08:28.972629Z

thanks 😄

2024-09-02T09:08:44.734819Z

👍 😊

Ben Sless 2024-09-02T13:34:57.024479Z

looks like the CIDER doc for letfn points to a dead link

Please see 

bozhidar 2024-09-02T15:04:38.143379Z

Yeah, it seems the links now look like this https://clojure.org/reference/special_forms#let

Alex Miller (Clojure team) 2024-09-02T16:13:55.806619Z

All the old pages redirect so old links should still work. I don’t remember ever removing letfn from there but maybe that happened at some point

bozhidar 2024-09-02T15:05:21.367139Z

I see there's no longer letfn in the reference, though.

✍️ 1