主题:请教:北大青鸟ACCP4.0 C#书后练习题
qianqiu2001
[专家分:150] 发布于 2006-08-31 18:43:00
书名:.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个回复)
沙发
谁有我苦 [专家分:170] 发布于 2006-08-31 20:43:00
哎,青鸟的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);
}
}
}
板凳
accp0527 [专家分:150] 发布于 2006-09-04 22:30:00
我是苏州 青鸟的,你们在二学期主要朝哪个方向发展?java/.Net??
3 楼
Kyuurayi [专家分:190] 发布于 2006-09-05 21:32:00
怎么成交流作业的了。。。。
4 楼
№爱简单‰ [专家分:0] 发布于 2006-09-06 21:03:00
汗,怎么这么多青鸟的啊,我是武汉青鸟的!!!
5 楼
xiaoqijun [专家分:660] 发布于 2006-09-07 20:15:00
暈! 醜哦!
6 楼
q123ty [专家分:0] 发布于 2006-09-07 22:26:00
我也是武汉青鸟的,楼上楼上的是哪个校区的啊?
7 楼
75989848 [专家分:40] 发布于 2006-09-10 12:33:00
哎~~~看来成了菜鸟天堂了,我是深圳的菜鸟,Y2
8 楼
Kyuurayi [专家分:190] 发布于 2006-09-11 20:59:00
不是吧 Y2 的都算菜鸟了? 以后怎么写程序啊?
9 楼
乌拉乌拉 [专家分:0] 发布于 2006-09-12 04:51:00
我写得比较麻烦
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 楼
sonce [专家分:50] 发布于 2006-09-19 16:47:00
都是什么鸟的,我是信息学院的!!!
我来回复