Avatar ·

如何正确编写Java微基准测试?JIT与优化的陷阱

大家好。我是一名初级Java开发者,需要测量两种算法实现的性能:一种使用`ArrayList`,另一种使用普通数组。我写了一个简单的测试: ```java public class MyBenchmark { public static void main(String[] args) { long start = System.nanoTime(); for (int i = 0; i < 100000; i++) { // 使用ArrayList的代码 List list = new ArrayList<>(); for (int j = 0; j < 1000; j++) { list.add(j); } int sum = 0; for (int val : list) { sum += val; } } long end = System.nanoTime(); System.out.println("ArrayList time: " + (end - start)); start = System.nanoTime(); for (int i = 0; i < 100000; i++) { // 使用数组的代码 int[] arr = new int[1000]; for (int j = 0; j < 1000; j++) { arr[j] = j; }