新手报道,初学问题!????求助! 我是初学.net的,,希望各位多多帮助,,但现在碰到一个问题,,没搞懂.题目,,测试采用装箱和不装箱两种情况哪种情况的运行效率更高????请高手给段代码,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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;} 使用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); 写了个完整的,,,,在"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 1ZhuangXiang Time:00:00:01.3519440Bu ZhuangXiang Time:00:00:00.1001440Count 2ZhuangXiang Time:00:00:01.7124624Bu ZhuangXiang Time:00:00:00.0801152Count 3ZhuangXiang Time:00:00:01.6323472Bu ZhuangXiang Time:00:00:00.0801152Count 4ZhuangXiang Time:00:00:02.3033120Bu ZhuangXiang Time:00:00:00.0701008Count 5ZhuangXiang Time:00:00:01.6523760Bu ZhuangXiang Time:00:00:00.0701008 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 }} 这个参数如何传递? 写的恶意小软件,咋结束360进程? 开发asp.net用什么做界面 C#datagridview 多列排序 一个警告问题 托盘的问题. 小问题 关于xml与string的操作问题 关于链接数据库的一个问题? 如何在WebForm之间传递值 .NET中关于水晶报表的问题 怎么样设置GridView控件在没有记录时显示标题?
//不装箱
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;
}
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);
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
{
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
}
}