日期:2014-05-20  浏览次数:20707 次

一个个人感觉疑惑的效率问题
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;


代码2

                    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++)
        {