相关疑难解决方法(0)

在.NET中将多维数组初始化为非默认值的最快方法是什么?

如何尽可能快地初始化基本类型的多维数组?

我坚持使用多维数组.我的问题是表现.以下例程初始化大约100x100阵列.500蜱.删除int.MaxValue初始化导致大约.180个滴答仅用于循环.大约100个刻度来创建数组而不循环并且没有初始化为int.MaxValue.

  • 类似的例程在"运行"期间被称为几十万到几百万次.
  • 在运行期间,阵列大小不会更改,并且一次创建数组,使用,然后丢弃数组,并创建新数组.
  • "运行"可能持续一分钟(使用10x10阵列)到45分钟(100x100).
  • 该应用程序创建int,bool和struct数组.
  • 可以同时执行多个"运行",但不是因为性能严重下降.
  • 我使用100x100作为基线.

我对如何优化数组的非默认初始化的建议持开放态度.我的一个想法是在可用时使用较小的原始类型.例如,使用byte而不是int,可以节省100个滴答.我会对此感到满意,但我希望我不必更改原始数据类型.

    public int[,] CreateArray(Size size) {
        int[,] array = new int[size.Width, size.Height];
        for (int x = 0; x < size.Width; x++) {
            for (int y = 0; y < size.Height; y++) {
                array[x, y] = int.MaxValue;
            }
        }
        return array;
    }
Run Code Online (Sandbox Code Playgroud)

使用以下内容减少到450个滴答:

    public int[,] CreateArray1(Size size) {
        int iX = size.Width;
        int iY = size.Height;
        int[,] array = new int[iX, iY];
        for (int x = 0; x < iX; x++) {
            for …
Run Code Online (Sandbox Code Playgroud)

.net initialization multidimensional-array

5
推荐指数
1
解决办法
3085
查看次数