java - 比较 Java 中使用纳米时间的方法速度性能

标签 java for-loop while-loop nanotime

我想比较两个 readDataMethod() 的速度性能(如果有的话),如下所示。

private void readDataMethod1(List<Integer> numbers) {
    final long startTime = System.nanoTime();
    for (int i = 0; i < numbers.size(); i++) {
        numbers.get(i);
    }
    final long endTime = System.nanoTime();
    System.out.println("method 1 : " + (endTime - startTime));
}

private void readDataMethod2(List<Integer> numbers) {
    final long startTime = System.nanoTime();
    int i = numbers.size();
    while (i-- > 0) {
        numbers.get(i);
    }
    final long endTime = System.nanoTime();
    System.out.println("method 2 : " + (endTime - startTime));
}

大多数时候,我得到的结果表明方法 2 具有“较低”的值。

   Run         readDataMethod1    readDataMethod2

     1                  636331             468876
     2                  638256             479269
     3                  637485             515455
     4                  716786             420756

此测试是否证明 readDataMethod2 比之前的方法更快?

最佳答案

Does this test prove that the readDataMethod2 is faster than the earlier one ?

您走在正确的轨道上,因为您正在衡量比较性能,而不是做出假设。

但是,在使用 Java 编写微基准时,有许多潜在问题需要注意。我建议你阅读 How do I write a correct micro-benchmark in Java?

关于java - 比较 Java 中使用纳米时间的方法速度性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10722195/

相关文章:

JavaFX 表格 View : remove/disable scollbars from the table(using a ScrollPane instead)

java - 在单独的线程中停止可运行的

javascript - Google Map API - 无法删除 for 循环中的标记

java - 这是一个测验程序,我必须从 4 个选项中选择 1 个选项,然后我必须显示用户得到了多少个错误和正确的答案

python - 将嵌套 for 循环转换为嵌套列表理解

java - 虽然不是(或同等)java

loops - JMeter while循环不检测EOF

java - 如何在 Android 中为按钮文本使用两种不同的字体大小?

java - 切换到java中while循环的第一行

java - Spring代理不包含被代理类的注解