C#如何加快速度?

时间:2012-03-03 16:42:06

标签: c# xna

chunk_indices.AddRange(new int[6] { 0 + length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length });

它看起来运行得相当缓慢,需要大约1微秒,这是很长一段时间,考虑到我调用了多少次,我怎样才能让它更快?

3 个答案:

答案 0 :(得分:1)

AddRange如果你有一个数组或另一个集合可以转换成一个数组开始,这是很方便的;但是,在这里你也可以反复调用Add

chunk_indices.Add(length);
chunk_indices.Add(length + 1);
chunk_indices.Add(length + 2);
chunk_indices.Add(length + 3);
chunk_indices.Add(length + 2);
chunk_indices.Add(length + 1);

答案 1 :(得分:1)

另一种方式是Array.Copy,就像这样

int[] source =  new int[6] { 0 + length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length }); 
//
// Assuming the chunk_indices has 6 elements already allocated.
//
Array.Copy(source, chunk_indices, 6);

AddRange的内部实现正常调用Array.Copy或CopyTo。因此,AddRange不可能比普通的Array.Copy执行得更好。

进一步的研究揭示了另一种选择,比前一种更快:

// Copy the first 24 bytes from source to chunk_indices
Buffer.BlockCopy(source, 0, chunk_indices, 0, 6 * sizeof(int));

答案 2 :(得分:0)

通常,AddRange方法接受参数数组,因此您可以尝试

chunk_indices.AddRange(length, 1 + length, 2 + length, 3 + length, 2 + length, 1 + length);