JVM Tutorials - Herong's Tutorial Examples - Version 4.23, by Dr. Herong Yang
"long" Division and Assignment: 53 Nanoseconds per Step
This section provides a tutorial example on how to perform benchmark tests to find out how long a division and assignment loop will take to run. The answer is 53 nanoseconds per step.
The next test is to measure the division operation performance. Here is the test method:
/**
 * BenchmarkTestLong.java
 * Copyright (c) 2010, HerongYang.com, All Rights Reserved.
 */
class BenchmarkTestLong {
...
   // Test method for a division operation in a loop
   public static long division(int steps, BenchmarkRunner runner) {
      long x = 0;
      long i = 0;
      long last = steps;
      runner.startTimer();
      for (i=0; i<last; i++) {
         x = i/3;
      }
      runner.stopTimer();
      return x;
   }
}
Here are test results:
C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 10 ... Runs: 100, Ave: 285, Min: 251, Max: 335 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 100 ... Runs: 100, Ave: 73, Min: 70, Max: 75 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 1000 ... Runs: 100, Ave: 52, Min: 52, Max: 53 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 10000 ... Runs: 100, Ave: 50, Min: 50, Max: 51 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 100000 ... Runs: 100, Ave: 51, Min: 51, Max: 54 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt division 10000 100 1000000 ... Runs: 100, Ave: 53, Min: 52, Max: 55 - Per step in nanoseconds
Conclusions based on the test result:
Last update: 2010.
Table of Contents
Downloading and Installing JDK 1.8.0 on Windows
Downloading and Installing JDK 1.7.0 on Windows
java.lang.Runtime Class - The JVM Instance
java.lang.System Class - The Operating System
ClassLoader Class - Class Loaders
Class Class - Class Reflections
JRockit JVM 28.2.7 by Oracle Corporation
Memory Management and Garbage Collectors
JVM Stack, Frame and Stack Overflow
Thread Testing Program and Result
CPU Impact of Multi-Thread Applications
I/O Impact of Multi-Thread Applications
Micro Benchmark Runner and JVM Options
Micro Benchmark Tests on "int" Operations
►Micro Benchmark Tests on "long" Operations
"long" Empty Loop: 25 Nanoseconds per Step
"long" Assignment Only: 24 Nanoseconds per Step
"long" Shift and Assignment: 30 Nanoseconds per Step
"long" Add and Assignment: 34 Nanoseconds per Step
"long" Multiply and Assignment: 38 Nanoseconds per Step
►"long" Division and Assignment: 53 Nanoseconds per Step
Performance Comparisons between "int" and "long"
Micro Benchmark Tests in JIT Compilation Mode