Skip to content

Instantly share code, notes, and snippets.

@mackenly
Last active June 29, 2023 23:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mackenly/1c309404b0d0b9027331c75b2d85ab5d to your computer and use it in GitHub Desktop.
Save mackenly/1c309404b0d0b9027331c75b2d85ab5d to your computer and use it in GitHub Desktop.
Test Java primitive int vs wrapper Integer speed and memory usage
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