一个个人感觉疑惑的效率问题
Java中假设存在一个2维数组
byte[][] byteArr;
int i,n;
byte a,d;
long lsum;
请猜下面2段代码效率哪个高?
代码1
a = byteArr[i][n];
if(a > 0 && a < 10)
lsum += a;
a = byteArr[i][n];
d = (byte)(Math.abs(a - 5));
if(d < 5)
lsum += a;
Random rnd = new Random();
long lsum = 0;
byte[][] byteArr = new byte[2000][1000];
for(int i = 0; i < 2000; i++)
{
for(int n = 0; n < 1000; n++)
{
byteArr[i][n] = (byte)(rnd.nextInt());
}
}
byte a = 0;
byte d = 0;
long t11 = new Date().getTime();
for(int t = 0; t < 2000; t++)
{
for(int i = 0; i < 1000; i++)
{
for(int n = 0; n < 1000; n++)
{
a = byteArr[i][n];
if(a > 0 && a < 10)
lsum += a;
}
}
}
long t12 = new Date().getTime();
long t21 = new Date().getTime();
for(int t = 0; t < 2000; t++)
{
for(int i = 0; i < 1000; i++)
{
for(int n = 0; n < 1000; n++)
{
a = byteArr[i][n];
d = (byte)(Math.abs(a - 5));
if(d < 5)
lsum += a;
}
}
}
long t22 = new Date().getTime();
System.out.println("t11 - t12: " + (t12 - t11));
System.out.println("t21 - t22: " + (t22 - t21));