gpt4 book ai didi

java - 在Android中,为什么第一次添加代码比第二次添加代码慢?

转载 作者:行者123 更新时间:2023-12-01 10:36:24 25 4
gpt4 key购买 nike

我使用的是针对 Android API 18 的 Android Studio 1.5.1(Android KitKat 4.4 之前的版本,因此我处理的是 Dalvik,而不是 ART 运行时)。

似乎当我在不使用变量的情况下添加 10 个整数,然后再次使用变量添加相同的数字时,无论我是否使用变量,第一个代码总是比第二个代码慢。

例如,在下面的代码中:

第一个代码(标有//****First code****)在不使用变量的情况下将 10 个整数相加,而第二个代码(标有//****Second code**) **,添加相同的 10 个整数,但它使用 10 个变量。

与不使用变量的代码相比,不使用变量是否会减慢代码执行速度?

此外,如果我交换代码,如果我将//****第二个代码****移到//****第一个代码****之上,//****第二个code**** 现在变得比//****First code**** 慢。

我的问题是:

为什么第一个代码总是比第二个代码慢,无论它是否使用变量?

long start, end, elapsed;

//****First code****

start = System.nanoTime();
System.out.printf("The sum is %d\n", (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9));
end = System.nanoTime();
elapsed = end - start;
System.out.println("start=" + start + " end=" + end + " elapsed=" + elapsed);

//****Second code****

start = System.nanoTime();
int a0=0,
a1=1,
a2=2,
a3=3,
a4=4,
a5=5,
a6=6,
a7=7,
a8=8,
a9=9;

a1 += a0;
a2 += a1;
a3 += a2;
a4 += a3;
a5 += a4;
a6 += a5;
a7 += a6;
a8 += a7;
a9 += a8;

System.out.printf("The sum is %d\n", a9);
end = System.nanoTime();
elapsed = end - start;
System.out.println("start="+start + " end="+end +" elapsed="+elapsed);

最佳答案

您正在计算 printf 所花费的时间。这应该会给出更多类似的结果。但不能保证它是相同的,因为线程可能随时进入 hibernate 状态。另外,在第一种情况下,它将被转换为常量,因此它实际上并不执行任何数学运算。

long start = System.nanoTime();

//this will be converted to a constant of 45 at compile time
int total = (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);
long end = System.nanoTime();

System.out.printf("The sum is %d\n", total);
System.out.println("Time: " + (end - start));

start = System.nanoTime();
int a0=0,
a1=1,
a2=2,
a3=3,
a4=4,
a5=5,
a6=6,
a7=7,
a8=8,
a9=9;
total = a0;
total += a1;
total += a2;
total += a3;
total += a4;
total += a5;
total += a6;
total += a7;
total += a8;
total += a9;
end = System.nanoTime();

System.out.printf("The sum is %d\n", total);
System.out.println("Time: " + (end - start));

关于java - 在Android中,为什么第一次添加代码比第二次添加代码慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com