从msdn中,我们知道Array 的Clear 方法的时间复杂度为O(n)。
我们今天测试一下,到底这个方法快,还是自己编写的快:
是Clear()快,还是直接new一个对象快。
看程序
private void Experiment()
{
System.Diagnostics.Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
string[] aa = new string[10000];
for (var loop = 0; loop < 100000; loop++)
{
// string[] aa = new string[10000];
for (var i = 0; i < 10000; i++)
{ aa[i] = "a"; }
//Array.Clear(aa, 0, 10000);
for (var i = 0; i < 10000;i++ )
{
aa[i] = null;
}
}
stopwatch.Stop();
Console.WriteLine("All timeL:"+stopwatch.Elapsed.TotalSeconds);
}
经过对比,得出如下数据:
对于Clear()与new object两种方案对比,前者耗时5.7秒。后者耗时6.3s
对于Clear()与自己编写的遍历算法对比,前者是5.7s,后者是8.5s。
这些数据的基础条件是对一个length为10000的数组执行10万次统计的时间。
意思很明显了。如果你需要执行一次,就无所谓了。
如果需要很多次,那么还是认真写代码比较好。