将数组元素导出到.csv excel文件的最有效方法是什么?现在我正在这样做,但是速度很慢。感谢你的支持。

int FrameWidth = 640;
int FrameHeight = 480;
Int16[] Values;  // 640 x 480, 307200 elements

/*
.. processing ......
*/

//Exporting Values to .csv file
string string2csv = null;
for (int y = 0; y < FrameHeight; y++)
{
    for (int x = 0; x < FrameWidth; x++)
    {
        string2csv = string2csv + Values[y * FrameWidth + x] + ";";
    }
    string2csv = string2csv + "\n";
}
File.WriteAllText("string2csv.csv", string2csv);

最佳答案

“最高效”将反复试验,但是一种简单的替代方法是使用StringBuilder

StringBuilder string2csv = new StringBuilder();
for (int y = 0; y < FrameHeight; y++)
{
    for (int x = 0; x < FrameWidth; x++)
    {
        string2csv.Append(Values[y * FrameWidth + x] + ";");
    }
    string2csv.Append("\n");
}


使用+添加字符串会为新字符串分配内存,然后将两个字符串的内容复制到新内存中。 StringBuilder在内存中预先分配一个缓冲区,并向该缓冲区添加字符,并根据需要扩展它。添加大量字符串时,内存分配和复制要少得多。

那可能“足够快”。除此之外,您还需要一个不错的分析器来查看您的代码在哪里花费最多的时间并攻击该部分。您的“处理中...”块很可能是瓶颈,而不是CSV输出。

08-25 08:31