今天看到《代码大全》上有一句话,不太理解:
"任何懂java的人都知道,从0开始循环至num-1要比从1开始到num效率要高得多"?

解决方案 »

  1.   

    http://topic.csdn.net/u/20071008/19/f9c2b824-1f6b-4be7-bb23-042336e1fa4f.html
      

  2.   

    不懂java  ,但是感觉书有问题? 编译生成的中间代码都是一样的效率才对。。楼主勿自扰!!
      

  3.   

    在.net中,从0开始循环至num-1和从1开始到num效率应该是差不多的
    但是,一维零基数组比一维非零基数组循环的效率要高,这点是肯定的
      

  4.   

    C#的,控制台程序。
    闲来测试一下,都是测试数组长度为1个亿的长度,为了消除执行顺序对时间的影响,分两段程序,每段都可以拷贝直接运行。 机器配置:win7 professional Dual-Core CPU E5800 @3.20Ghz 3.20Ghz 内存2G第一段:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;namespace AbstractFactory
    {
        class Client
        {
            /// <summary>
            /// 主方法
            /// </summary>
            public static void Main()
            {
                int[] arr = new int[100000000];
                //无聊的整型变量
                int tmp;            //从1开始
                Console.WriteLine("开始时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                for (int i = 1; i < 100000000; i++)
                {
                    tmp = arr[i];
                }
                Console.WriteLine("结束时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
               // Console.ReadLine();            //从0开始
                Console.WriteLine("开始时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                for (int i = 0; i < 100000000; i++)
                {
                    tmp = arr[i];
                }
                Console.WriteLine("结束时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                Console.ReadLine();
            }
        }
    }测试结果:
    开始时间:8秒777毫秒
    结束时间:9秒209毫秒
    开始时间:9秒209毫秒
    结束时间:9秒537毫秒可以看出 第一个循环432毫秒(从1开始) ,第二个循环328毫秒(从0开始)
      

  5.   

    第二段程序:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;namespace AbstractFactory
    {
        class Client
        {
            /// <summary>
            /// 主方法
            /// </summary>
            public static void Main()
            {
                int[] arr = new int[100000000];
                //无聊的整型变量
                int tmp;            //从0开始
                Console.WriteLine("开始时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                for (int i = 0; i < 100000000; i++)
                {
                    tmp = arr[i];
                }
                Console.WriteLine("结束时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                //Console.ReadLine();            //从1开始
                Console.WriteLine("开始时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                for (int i = 1; i < 100000000; i++)
                {
                    tmp = arr[i];
                }
                Console.WriteLine("结束时间:" + DateTime.Now.Second + "秒" + DateTime.Now.Millisecond + "毫秒");
                Console.ReadLine();            
            }
        }
    }测试结果:
    开始时间:42秒41毫秒
    结束时间:42秒464毫秒
    开始时间:42秒464毫秒
    结束时间:42秒788毫秒可以看出 第一个循环423毫秒(从0开始) ,第二个循环324毫秒(从1开始)