首页 > 解决方案 > 用基于位置的值填充二维数组的有效方法

问题描述

有以下代码:

public int[,] GenerateArray(int size)
{
    int[,] data = new int[size, size];

    for (int x = 0; x < size; ++x)
        for (int y = 0; y < size; ++y)
            data[x, y] = x * y; // Example calculation function that depends on indexes

    return data;
}

如您所见,我正在尝试用值填充二维数组。每个元素的值都是根据它的索引计算的。需要处理的数据量巨大,因此需要一些时间来处理。有没有更有效的方法来实现这一目标?比如,使用 GPU 着色器或其他东西。

标签: c#unity3d

解决方案


您可以不使用数组,而是使用数学函数吗?如果您需要 [2123,453] 位置,您只需使用 func(2123,453) 计算它的数据。如果您需要保护数据,您可以只保护这个修改后的部分。

我认为您可以使用基于 GPU 的 Task.Run 进行并行计算

数组大小和计算函数是什么?


推荐阅读