Amazon CodeGuru Profiler vs async-profiler
Amazon CodeGuru Profiler
aws.amazon.comasync-profiler
github.comSide by side
| Figure | Amazon CodeGuru Profiler | async-profiler |
|---|---|---|
| Price from | $0.01/mo | Free |
| Free plan | Yes | Yes |
| Free trial | Yes | — |
| Open source | — | — |
| Web | Yes | — |
| macOS | — | Yes |
| Linux | Yes | Yes |
| API | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 3 | 1 |
| Spec score · Profiling Software | 8.6 (#2) | 8.1 (#7) |
| Purpose | Amazon CodeGuru Profiler collects runtime performance data from live applications and provides recommendations to improve performance and find CPU bottlenecks. | async-profiler is a low-overhead sampling profiler for Java that avoids the safepoint bias problem. |
| Runtime support | The FAQ lists Java, Python, and JVM languages such as Scala and Kotlin, and says applications can run on EC2, ECS, EKS, Fargate, Lambda, or on premises. | It works with OpenJDK and other Java runtimes based on the HotSpot JVM. |
Plans
Amazon CodeGuru Profiler
- Amazon CodeGuru Profiler Free TierFree
- Amazon CodeGuru Profiler on AWS Lambda$0.01 a month
- Amazon CodeGuru Profiler on EC2, ECS, EKS, and AWS Fargate$0.01 a month
In their own words
Amazon CodeGuru Profiler
Amazon CodeGuru Profiler collects runtime performance data from live applications and recommends ways to improve performance and find CPU bottlenecks. It is designed for continuous profiling of production applications with minimal overhead. Interactive flame graphs show CPU and latency analysis, including which code paths use the most resources. Machine learning recommendations identify expensive methods and explain their cause, impact, and possible resolution.
The service can detect anomalies in application profiles and, when configured, send an Amazon SNS notification for a new anomaly. It supports Java, JVM languages such as Scala and Kotlin, and Python 3.6 or later. Java and other JVM languages can be profiled for CPU and heap summary; Python profiling covers CPU wall-clock time. Applications may run on EC2, ECS, EKS, Fargate, Lambda, or on premises. The agent can be enabled in JVM applications from the command line or application code and is also used for Lambda applications. An AWS account is required, with IAM permissions controlling access. The agent collects stack traces, not parameter names or values, variable values, or application data.
async-profiler
async-profiler is a free, self-hosted sampling profiler for Java designed to keep overhead low and avoid safepoint bias. It works with OpenJDK and other runtimes based on the HotSpot JVM, and stack traces can include non-Java threads as well as native and kernel frames. It profiles CPU time, Java-heap and native-memory allocations, memory leaks, contended locks, and hardware or software performance counters. Documented modes include CPU, allocation, wall-clock, Java-method, and multiple-events profiling. Results can be saved as collapsed stacks, flame graphs, HTML tree views, or text; an interactive Flame Graph can be viewed in a browser. Officially maintained builds are available for Linux and macOS on x64 and arm64. Developers can use the Java API as a Maven dependency, and IntelliJ IDEA includes async-profiler in its Java Profiler settings. It can profile Java processes in Docker or LXC from inside a container or from the host. Building it requires make, GCC 7.5.0 or later or Clang 7.0.0 or later, static libstdc++, and JDK 11 or later.