c# - 从数组中采样

标签 c#

我有一个包含 1M float 的 float 组

我想做采样:对于每 4 个 float ,我只想取 1 个。所以我正在这样做:

for(int i = 0; i< floatArray.Length; i++) {
    if(i % 4 == 0) {
         resultFloat.Add(floatArray[i])
    }
}

这很好用,但是遍历所有元素需要很多时间,是否有其他方法可以使它获得更好的结果(如果有的话)

最佳答案

我可以看到两个可能会降低性能的因素。

  1. 因为已经给你提供了,你应该将步骤设置为 4:

    for (int i = 0; i < floatArray.Length; i += 4)
    {
        resultFloat.Add(floatArray[i]);
    }
    
  2. 看起来 resultFloatfloat 的列表。我建议使用数组而不是列表,如下所示:

    int m = (floatArray.Length + 3) / 4;
    
    float[] resultFloat = new float[m];
    
    for (int i = 0, k = 0; i < floatArray.Length; i += 4, k++)
    {
        resultFloat[k] = floatArray[i];
    }
    

关于c# - 从数组中采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47980427/

相关文章:

c# - 通过反射调用带有可选参数的方法

c# - 检查 IEnumerable<T> 是否不包含重复项(= 不同)的快速方法

c# - 在另一个域中创建实例和展开?

c# - 使用匿名类型调用泛型方法 (C#)

c# - ASP.NET MVC View 数据为空

c# - 使用外部 EXE 作为启动项目

c# - 连接和析取辅助类

c# - 如何让 C# Xamarin.Android 应用程序在手机启动时运行?

c# - 在 C# 中访问可空值的最佳方式

c# - 偏移量的光线转换