JMH VS JITWatch

Compare JMH vs JITWatch and see what are their differences.

JMH

"Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness) (by sbt)

JITWatch

Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface. (by AdoptOpenJDK)
Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
JMH JITWatch
2 6
738 2,639
0.0% 0.8%
2.1 6.9
about 2 months ago 14 days ago
Scala Java
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

JMH

Posts with mentions or reviews of JMH. We have used some of these posts to build our list of alternatives and similar projects.
  • Why is Scala so much slower than JavaScript/Node at running iterations?
    1 project | reddit.com/r/scala | 13 Feb 2022
    Take a look at sbt-jhm for doing benchmarks. Java in particular is hard to measure because of optimizations that happen at run-time. jhm runs multiple iterations and gives tools to ensure that function calls and loops that may be optimized away are kept around and tested. You may also find some cases that are faster in node.js because the Javascript V8 engine is highly optimized.
  • Help with making backtracking more efficient
    1 project | reddit.com/r/scala | 26 Aug 2021
    Also, if you really want to know what the performance characteristics are you should use JMH (sbt plugin https://github.com/sbt/sbt-jmh). Not sure how you are evaluating the performance but things like JVM startup and warming can make a big difference. JMH will give you a better idea of real world performance when the JVM is already started and any relevant hot code has been JIT compiled.

JITWatch

Posts with mentions or reviews of JITWatch. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-04-27.
  • Equivalent of cppinsight for kotlin
    1 project | reddit.com/r/Kotlin | 30 Oct 2021
  • Compiler Explorer - Java support
    2 projects | reddit.com/r/java | 27 Apr 2021
    We use https://github.com/AdoptOpenJDK/jitwatch for this.
  • How to Read Assembly Language
    1 project | news.ycombinator.com | 2 Mar 2021
  • Why Zig When There Is Already C++ and Rust?
    10 projects | news.ycombinator.com | 15 Jan 2021
    If you already know any JVM or .NET language, the first step would be to understand the full stack, you don't need C for that.

    Many of us were doing systems programming with other languages before C went mainstream.

    What you need to learn is computer architecture.

    Getting back to JVM or .NET, you can get hold of JIT Watch, VS debug mode or play online in SharpLab.

    Get to understand how some code gets translated into MSIL/JVM, and how those bytecodes end up being converted into machine code.

    https://github.com/AdoptOpenJDK/jitwatch/wiki/Screenshots

    https://sharplab.io/

    Languages like F# and C# allow you to leave the high level comfort and also do most of the stuff you would be doing in C.

    Or just pick D, which provides the same comfort and goes even further in low level capabilities.

    Use them to write a toy compiler, userspace driver, talking to GPIO pins in a PI, manipulating B-Tree data stuctures directly from inodes, a TCP/IP userspace driver.

    Not advocating not to learn Zig, do it still, the more languages one learns the better.

    Only advocating what might be an easier transition path into learning about systems programming concepts.

  • JIT 101
    1 project | dev.to | 11 Jan 2021
    You can enable a lot of debug information about how the compiler decides what to do with your code using feature flags like -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining. If you want to dive deeper into the world of the Hotspot JIT Compiler, have a look at JITWatch.
  • Is Java As Fast As C When It Comes To Stack
    1 project | reddit.com/r/java | 21 Dec 2020
    In what concerns HotSpot, one way would be JITWatch.

What are some alternatives?

When comparing JMH and JITWatch you can also consider the following projects:

honest-profiler - A sampling JVM profiler without the safepoint sample bias

SharpLab - .NET language playground

sbt-sonatype - A sbt plugin for publishing Scala/Java projects to the Maven central.

sbt-buildinfo - I know this because build.sbt knows this.

jHiccup - jHiccup is a non-intrusive instrumentation tool that logs and records platform "hiccups" - including the JVM stalls that often happen when Java applications are executed and/or any OS or hardware platform noise that may cause the running application to not be continuously runnable.

LatencyUtils - Utilities for latency measurement and reporting

sbteclipse - Plugin for sbt to create Eclipse project definitions

MaterialFX - A library of material components for JavaFX

JFoenix - JavaFX Material Design Library

quickperf - QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties

sbt-dependency-graph - sbt plugin to create a dependency graph for your project