java - 相同的代码块执行时长不同

标签 java time

我试图用类似的 block 检查执行时间。

示例代码和输出如下,

    public class Tester {

    public static void main(String[] args) {
        System.out.println("Run 1");
        List<Integer> list = new ArrayList<>();
        int i = 0;
        long st = System.currentTimeMillis();
        while (++i < 10000) {
            list.add(i);
        }
        System.out.println("Time taken :" + (System.currentTimeMillis() - st));

        System.out.println("Run 2");
        int j = 0;
        List<Integer> list2 = new ArrayList<>();
        long ST = System.currentTimeMillis();
        while (++j < 10000) {
            list2.add(j);
        }
        System.out.println("Time taken :" + (System.currentTimeMillis() - ST));

        System.out.println("Run 3");
        int k = 0;
        List<Integer> list3 = new ArrayList<>();
        long ST2 = System.currentTimeMillis();
        while (++k < 10000) {
            list3.add(k);
        }
        System.out.println("Time taken :" + (System.currentTimeMillis() - ST2));
    }
}

输出

Run 1
Time taken :6
Run 2
Time taken :3
Run 3
Time taken :1

为什么我的执行时间不同?

最佳答案

这可能是为了对数组列表进行即时编译和热点优化,但你不能100%确定。

除此之外,您的样本量太小,意义不大。

关于java - 相同的代码块执行时长不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301187/

相关文章:

java - 我可以为 GLES20.glDrawElements 函数提供多少个索引?

python - pandas 方式将一天中的时间(有效 datetime.time)转换为浮点变量

mysql - SQL 时间列不按升序排序

java - 为我的 Android 项目生成 Javadoc

java - 使用公网IP远程访问MySQL数据库出错

java - 永远从 socket bufferreader 读取 android

Java/安卓 : Reading/writing a byte array over a socket

c++ - 使用多个变量和 while 循环跟踪播放时间

JavaScript,小时比较

datetime - Go time.Now() 总是 2009-11-10 23 :00:00 +0000 UTC