回 帖 发 新 帖 刷新版面

主题:请教:北大青鸟ACCP4.0 C#书后练习题

书名:.net平台和C#编程
页数:52页第二题
原题:
编写一个C#程序,用来测试采用装箱和不装箱两种情况哪种效率较高:推荐的步骤如下:
1.声明一个int类型的数组sourceArray,长度为5000000
2.声明一个object类型的数组targetArray,长度也为5000000
3.把sourceArray数组元素装箱后拷贝到targetArray数组里面
4.把targetArray数组元素拆箱后拷贝到sourceArray数组里
5.用DateTime.Now记下开始、结束时间,计算消耗的时间,就是采用装箱方式消耗的时间
6.声明一个int类型的数组targetArray1,长度也为5000000
7.把sourceArray数组的元素拷贝到targetArray1数组里
8.再把targetArray1数组元素拷贝回sourceArray里,计算消耗的时间

请问应该如何写这个程序?

回复列表 (共11个回复)

沙发

哎,青鸟的S2一下子难了好多啊...我是杭州青鸟的..
using System;

namespace zhuangxiang
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: 在此处添加代码以启动应用程序
            //
            int i=0;
            int j=0;
            DateTime D1,D2;
            D1=DateTime.Now;
            for (j=0;j<5;j++)
            {
                int[] sourceArrey=new int[5000000];
                object[] targetArrey=new object[5000000];
                for (i=0;i<5000000;i++)
                {
                    targetArrey[i]=sourceArrey[i];     //装箱
                }
                for (i=0;i<5000000;i++)
                {
                    sourceArrey[i]=(int)targetArrey[i];  //拆箱
                }
            }
            D2=DateTime.Now;
            Console.WriteLine("装拆箱需要时间:");
            Console.WriteLine(D2-D1);

            D1=DateTime.Now;
            for (j=0;j<5;j++)
            {
                int[] sourceArrey=new int[5000000];
                int[] targetArrey1=new int[5000000];
                for (i=0;i<5000000;i++)
                {
                    sourceArrey[i]=targetArrey1[i];
                }
                for (i=0;i<5000000;i++)
                {
                    targetArrey1[i]=sourceArrey[i];
                }
            }
            D2=DateTime.Now;
            Console.WriteLine("直接赋值需要时间:");
            Console.WriteLine(D2-D1);
        }
    }
}

板凳

我是苏州 青鸟的,你们在二学期主要朝哪个方向发展?java/.Net??

3 楼

怎么成交流作业的了。。。。

4 楼

汗,怎么这么多青鸟的啊,我是武汉青鸟的!!!

5 楼

暈! 醜哦!

6 楼

我也是武汉青鸟的,楼上楼上的是哪个校区的啊?

7 楼

哎~~~看来成了菜鸟天堂了,我是深圳的菜鸟,Y2

8 楼

不是吧 Y2 的都算菜鸟了? 以后怎么写程序啊?

9 楼

我写得比较麻烦
using System;

namespace ConsoleApplication1
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            int [] sourceArray=new int [5000000];
            TimeSpan [] time1=new TimeSpan[5];
            TimeSpan [] time2=new TimeSpan[5];
            TimeSpan [] time3=new TimeSpan[5];
            TimeSpan [] time4=new TimeSpan[5];
            TimeSpan sum1=time1[0];
            TimeSpan sum2=time2[0];
            TimeSpan sum3=time3[0];
            TimeSpan sum4=time4[0];
            object [] targetArray=new object [5000000];
            for(int h=0;h<5;h++)
            {
                DateTime date1=DateTime.Now;
                for (int i=0;i<5000000;i++)
                {
                    targetArray[i]=sourceArray[i];
                }
                DateTime date2=DateTime.Now;
                time1[h]=date2-date1;
                Console.WriteLine(time1[h]);
            }
            for(int i=0;i<5;i++)
            {
                sum1+=time1[i];
            }
            Console.WriteLine("装箱总时间为:{0}",sum1);
            for(int h=0;h<5;h++)
            {
                DateTime date1=DateTime.Now;
                for (int i=0;i<5000000;i++)
                {
                    sourceArray[i]=(int)targetArray[i];
                }
                DateTime date2=DateTime.Now;
                time2[h]=date2-date1;
                Console.WriteLine(time2[h]);
            }
            for(int i=0;i<5;i++)
            {
                sum2+=time2[i];
            }
            Console.WriteLine("拆箱总时间为:{0}",sum2);
            int [] targetArray1=new int [5000000];
            for(int h=0;h<5;h++)
            {
                DateTime date1=DateTime.Now;
                for (int i=0;i<5000000;i++)
                {
                    targetArray1[i]=sourceArray[i];
                }
                DateTime date2=DateTime.Now;
                time3[h]=date2-date1;
                Console.WriteLine(time3[h]);
            }
            for(int i=0;i<5;i++)
            {
                sum3+=time3[i];
            }
            Console.WriteLine("总时间为:{0}",sum3);
            for(int h=0;h<5;h++)
            {
                DateTime date1=DateTime.Now;
                for (int i=0;i<5000000;i++)
                {
                    sourceArray[i]=targetArray1[i];
                }
                DateTime date2=DateTime.Now;
                time4[h]=date2-date1;
                Console.WriteLine(time4[h]);
            }
            for(int i=0;i<5;i++)
            {
                sum4+=time4[i];
            }
            Console.WriteLine("总时间为:{0}",sum4);
        }
    }
}

10 楼

都是什么鸟的,我是信息学院的!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册