Last active
June 29, 2023 23:07
-
-
Save mackenly/1c309404b0d0b9027331c75b2d85ab5d to your computer and use it in GitHub Desktop.
Test Java primitive int vs wrapper Integer speed and memory usage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.lang.management.ManagementFactory; | |
import java.lang.management.MemoryMXBean; | |
/** | |
* Class Name: Test | |
* Purpose: Test primitive int vs wrapper Integer speed and memory usage | |
*/ | |
public class JavaArrayTest { | |
/** | |
* Method Name: main | |
* Method Description: Main method for Test | |
* @param args (not used) | |
*/ | |
public static void main(String[] args) { | |
// declare variables and objects | |
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); | |
long beforeUsedMem, startTime, endTime, afterUsedMem; | |
int size = 10_000_000; | |
// Test 1 with primitive int | |
beforeUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
startTime = System.nanoTime(); | |
int[] arrInt = new int[size]; | |
for (int i = 0; i < size; i++) { | |
arrInt[i] = i; | |
} | |
endTime = System.nanoTime(); | |
afterUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
System.out.println("\nPrimitive int array"); | |
System.out.println("Time taken in milliseconds: " + (endTime - startTime) / 1_000_000); | |
System.out.println("Memory used in bytes: " + (afterUsedMem - beforeUsedMem)); | |
// Test 1 with wrapper Integer | |
beforeUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
startTime = System.nanoTime(); | |
Integer[] arrInteger = new Integer[size]; | |
for (int i = 0; i < size; i++) { | |
arrInteger[i] = i; | |
} | |
endTime = System.nanoTime(); | |
afterUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
System.out.println("\nWrapper Integer array"); | |
System.out.println("Time taken in milliseconds: " + (endTime - startTime) / 1_000_000); | |
System.out.println("Memory used in bytes: " + (afterUsedMem - beforeUsedMem)); | |
// Test 2 with wrapper Integer | |
beforeUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
startTime = System.nanoTime(); | |
Integer[] arrInteger2 = new Integer[size]; | |
for (int i = 0; i < size; i++) { | |
arrInteger2[i] = i; | |
} | |
endTime = System.nanoTime(); | |
afterUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
System.out.println("\nWrapper Integer array"); | |
System.out.println("Time taken in milliseconds: " + (endTime - startTime) / 1_000_000); | |
System.out.println("Memory used in bytes: " + (afterUsedMem - beforeUsedMem)); | |
// Test 2 with primitive int | |
beforeUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
startTime = System.nanoTime(); | |
int[] arrInt2 = new int[size]; | |
for (int i = 0; i < size; i++) { | |
arrInt2[i] = i; | |
} | |
endTime = System.nanoTime(); | |
afterUsedMem = memoryBean.getHeapMemoryUsage().getUsed(); | |
System.out.println("\nPrimitive int array"); | |
System.out.println("Time taken in milliseconds: " + (endTime - startTime) / 1_000_000); | |
System.out.println("Memory used in bytes: " + (afterUsedMem - beforeUsedMem)); | |
} // end method main | |
} // end class Test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment