JVM Tutorials - Herong's Tutorial Examples - Version 4.23, by Dr. Herong Yang
"int" Assignment Only: 14 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 assignment loop - 14 nanoseconds per step.
Using the empty loop execution time obtained from the previous tutorial as a baseline, I can do more interesting tests now.
This time I want to find out how long it will take to run a loop with a simple assignment statement in interpreted-only mode. Here is my test method for this:
/** * BenchmarkTestInt.java * Copyright (c) 2010, HerongYang.com, All Rights Reserved. */ class BenchmarkTestInt { ... // Test method for an assignment operation in a loop public static int assignment(int steps, BenchmarkRunner runner) { int x = 0; int i = 0; int last = steps; runner.startTimer(); for (i=0; i<last; i++) { x = i; } runner.stopTimer(); return x; } }
Here are test results:
C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 10 ... Runs: 100, Ave: 250, Min: 224, Max: 307 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 100 ... Runs: 100, Ave: 39, Min: 36, Max: 42 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 1000 ... Runs: 100, Ave: 17, Min: 16, Max: 17 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 10000 ... Runs: 100, Ave: 15, Min: 15, Max: 15 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 100000 ... Runs: 100, Ave: 14, Min: 14, Max: 15 - Per step in nanoseconds C:\herong\jvm>java -Xint -Xms100m -Xmx100m BenchmarkRunner BanchmarkTestInt assignment 10000 100 1000000 ... Runs: 100, Ave: 14, Min: 14, Max: 15 - 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
Hardware, OS and JVM Configurations
"int" Empty Loop: 16 Nanoseconds per Step
►"int" Assignment Only: 14 Nanoseconds per Step
"int" Shift and Assignment: 17 Nanoseconds per Step
"int" Add and Assignment: 17 Nanoseconds per Step
"int" Multiply and Assignment: 17 Nanoseconds per Step
"int" Division and Assignment: 19 Nanoseconds per Step
Micro Benchmark Tests on "long" Operations
Micro Benchmark Tests in JIT Compilation Mode