JFR vs async-profiler for a Scala service: choosing a profiling setup without distorting the bottleneck
Goal Before optimizing a latency-critical Scala service, I want to measure where time actually goes — CPU, allocation/GC, lock contention, or blocking I/O — rather than guessing from code shape. The constraint is that the profiling setup itself must not distort the result enough to send optimization effort in the wrong direction. Context and uncertainty The