gpt4 book ai didi

c# - 将锯齿状数组的值克隆到第二个数组中的极快方法?

转载 作者:可可西里 更新时间:2023-11-01 08:57:52 24 4
gpt4 key购买 nike

我目前正在开发一个应用程序,该应用程序负责计算锯齿状数组的随机排列。

目前,应用程序中的大部分时间都花在每次迭代中复制数组上(总共 100 万次迭代)。在我当前的系统上,整个过程需要 50 秒才能完成,其中 39 秒用于克隆阵列。

我的阵列克隆程序如下:

    public static int[][] CopyArray(this int[][] source)
{
int[][] destination = new int[source.Length][];
// For each Row
for (int y = 0; y < source.Length; y++)
{
// Initialize Array
destination[y] = new int[source[y].Length];
// For each Column
for (int x = 0; x < destination[y].Length; x++)
{
destination[y][x] = source[y][x];
}
}
return destination;
}

有没有安全或不安全的方法可以更快地达到与上述相同的效果?

最佳答案

这些都应该适合你。它们的运行时间大致相同,而且都比您的方法快得多。

// 100 passes on a int[1000][1000] set size

// 701% faster than original (14.26%)
static int[][] CopyArrayLinq(int[][] source)
{
return source.Select(s => s.ToArray()).ToArray();
}

// 752% faster than original (13.38%)
static int[][] CopyArrayBuiltIn(int[][] source)
{
var len = source.Length;
var dest = new int[len][];

for (var x = 0; x < len; x++)
{
var inner = source[x];
var ilen = inner.Length;
var newer = new int[ilen];
Array.Copy(inner, newer, ilen);
dest[x] = newer;
}

return dest;
}

关于c# - 将锯齿状数组的值克隆到第二个数组中的极快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com