我是初学.net的,,希望各位多多帮助,,但现在碰到一个问题,,没搞懂.
题目,,测试采用装箱和不装箱两种情况哪种情况的运行效率更高????
请高手给段代码,谢谢!

解决方案 »

  1.   

    int i=0;
    //不装箱
    for(int k = 0 ; k< 100000000; k++)
    {
      i += k;
    }
    //装箱
    for(int k = 0 ; k< 100000000; k++)
    {
      object tmp = (object)i;
      tmpi = Int32.Parse(tmp);
      tmpi += k;
    }
      

  2.   

    使用
    DateTime.Now
    计时如上面例子的一部分:
    DateTime BeginTime=DateTime.Now,EndTime=DateTime.Now;
    //不装箱
    BeginTime=DateTime.Now;
    for(int k = 0 ; k< 100000000; k++)
    {
    i += k;
    }
    EndTime=DateTime.Now;
    Console.WriteLine(EndTime-BeginTime);
      

  3.   

    写了个完整的,,,,在"Snippet Compiler"下测试了.....using System;namespace iColor{
    public class MyClass
    {
    public static void Main(string[] args)
    {
    int[] intArray1=new int[5000000];
    int[] intArray2=new int[5000000];
    object[] objArray=new object[5000000];
                DateTime bTime=DateTime.Now,eTime=DateTime.Now;
                //...
    for(int i=0;i<intArray1.Length;i++){
    intArray1[i]=i;
    }
                //Count...
    for(int count=1;count<=5;count++){
                    Console.WriteLine("Count {0}",count);
                    bTime=DateTime.Now;
                    for(int i=0;i<intArray1.Length;i++){
                        objArray[i]=intArray1[i];
                    }
                    eTime=DateTime.Now;
                    Console.WriteLine("ZhuangXiang Time:\n"+(eTime-bTime));
                    bTime=DateTime.Now;
                    for(int i=0;i<intArray1.Length;i++){
                        intArray2[i]=intArray1[i];
                    }
                    eTime=DateTime.Now;
        Console.WriteLine("Bu ZhuangXiang Time:\n"+(eTime-bTime));
    }
    Console.Read();
    }
    }
    }
    --------------
    Count 1
    ZhuangXiang Time:
    00:00:01.3519440
    Bu ZhuangXiang Time:
    00:00:00.1001440
    Count 2
    ZhuangXiang Time:
    00:00:01.7124624
    Bu ZhuangXiang Time:
    00:00:00.0801152
    Count 3
    ZhuangXiang Time:
    00:00:01.6323472
    Bu ZhuangXiang Time:
    00:00:00.0801152
    Count 4
    ZhuangXiang Time:
    00:00:02.3033120
    Bu ZhuangXiang Time:
    00:00:00.0701008
    Count 5
    ZhuangXiang Time:
    00:00:01.6523760
    Bu ZhuangXiang Time:
    00:00:00.0701008
      

  4.   

    using System;namespace Box
    {
    class Box
    {
    #region//upBox()装箱用时
    private static void upBox()
    {
    int[] sourceArray=new int[5000000];
    object[] targetArray=new Object[5000000];
    DateTime beginTime=DateTime.Now,endTime;
    for(int i=0;i<5000000;i++)
    {
    targetArray[i]=(object)sourceArray[i];
    }
    for(int i=0;i<5000000;i++)
    {
    sourceArray[i]=(int)targetArray[i];
    }
    endTime=DateTime.Now;
    Console.WriteLine("装箱用时:{0}",endTime-beginTime);
    }
    #endregion
    #region//notUpBox()不装箱用时
    private static void notUpBox()
    {
    int[] sourceArray=new int[5000000];
    int[] targetArray=new int[5000000];
    DateTime beginTime=DateTime.Now,endTime;
    for(int i=0;i<5000000;i++)
    {
    targetArray[i]=sourceArray[i];
    }
    for(int i=0;i<5000000;i++)
    {
    sourceArray[i]=targetArray[i];
    }
    endTime=DateTime.Now;
    Console.WriteLine("不装箱用时:{0}",endTime-beginTime);
    }
    #endregion
    [STAThread]
        #region//主方法
    static void Main(string[] args)
    {
    upBox();
    notUpBox();  
    }
    #endregion
    }
    }