我理解我不应该优化程序的每一个点,让我们假设我需要优化数组初始化。
因此,我编写了一个比较“for循环”和“Array.Clear”的程序。
所以
更新:我不寻找一些“极端不安全”的代码。我正在寻找像
更新:我想重置现有的数组。因此,我正在寻找类似于
因此,我编写了一个比较“for循环”和“Array.Clear”的程序。
using System;
using System.Diagnostics;
namespace TestArraysClear
{
class Program
{
static void Main(string[] args)
{
int[] a = new int[100000];
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 10; i++)
{
sw.Reset();
sw.Start();
for (int j = 0; j < a.Length; j++)
{
a[j] = 0;
}
sw.Stop();
Console.WriteLine("for " + sw.ElapsedTicks);
sw.Reset();
sw.Start();
Array.Clear(a, 0, a.Length);
sw.Stop();
Console.WriteLine("Array.Clear " + sw.ElapsedTicks);
}
}
}
}
我的电脑上的输出:
for 1166
Array.Clear 80
for 1136
Array.Clear 91
for 1350
Array.Clear 71
for 1028
Array.Clear 72
for 962
Array.Clear 54
for 1185
Array.Clear 46
for 962
Array.Clear 55
for 1091
Array.Clear 55
for 988
Array.Clear 54
for 1046
Array.Clear 55
所以
Array.Clear
比for循环
快大约20倍。但是Array.Clear
会初始化为0
。我能否用相同的性能将数组初始化为-1
?更新:我不寻找一些“极端不安全”的代码。我正在寻找像
Array.Clear
这样简单的东西。我只是想知道.NET提供了快速的0初始化,但是.NET没有提供初始化其他值的选项。那么为什么.NET更喜欢“0”而不是“-1”呢?更新:我想重置现有的数组。因此,我正在寻找类似于
Array.Clear
的东西,它将数组重置为-1
,而不是0
。
100000
。 - Oleg Vazhnev