JVM Tutorials - Herong's Tutorial Examples - Version 4.23, by Dr. Herong Yang
"long" Empty Loop: 25 Nanoseconds per Step
This section provides a tutorial example on how to perform benchmark tests to find out how long each step will take to run in an empty loop with a 'long' index in interpreted-only mode. The answer is 25 nanoseconds!
After finishing on testing "int" operations, I want to see performances of "long" operations. Again, I use an empty loop with a "long" index as the first test:
/** * BenchmarkTestLong.java * Copyright (c) 2010, HerongYang.com, All Rights Reserved. */ class BenchmarkTestLong { // The empty loop benchmark test method public static long emptyLoop(int steps, BenchmarkRunner runner) { long x = 0; long i = 0; long last = steps; runner.startTimer(); for (i=0; i<last; i++) { } runner.stopTimer(); x = i; return x; } }
Here are test results:
C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 10 ... Runs: 100, Ave: 252, Min: 223, Max: 279 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 100 ... Runs: 100, Ave: 48, Min: 45, Max: 50 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 1000 ... Runs: 100, Ave: 27, Min: 27, Max: 28 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 10000 ... Runs: 100, Ave: 25, Min: 25, Max: 27 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 100000 ... Runs: 100, Ave: 25, Min: 25, Max: 27 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BenchmarkTestLong emptyLoop 10000 100 1000000 ... Runs: 100, Ave: 25, Min: 25, Max: 27 - Per step in nanoseconds
Conclusions based on the test result:
I also noticed that during the execution of the 1000000-step test, my laptop CPU cooling fan ran continuously. The cooling fan stopped gradually after the test was done. This tells me that my 1000000-step test was really CPU intensive and caused its temperature to raise!
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