❔ Whats the fastest way to write this data to a file? (C# Console App.)
I need to write an int[][] to disk. Each int[] has 2 values, and the full int[][] has 100mil entries. What would be the fastest method of writing this to disk?
StreamWriter for sure, this amount of data should be streamedsw.WriteLine(xY[0] + ", " + xY[1]);f.WriteLine($"{data[i][0]},{data[i][1]}"); gets 00:00:12.6447007

.txt files no problem
using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
{
foreach (int[] xY in worlds)
{
sw.WriteLine(xY);
}
} f.Write(data[i][0]);
f.Write(',');
f.WriteLine(data[i][1]);using System.Diagnostics;
int[][] data = Enumerable.Range(0, 100000000).Select(_ => new[] { Random.Shared.Next(), Random.Shared.Next() }).ToArray();
Console.WriteLine("start");
var sw = Stopwatch.StartNew();
using var f = File.CreateText("output.txt");
for (var i = 0; i < data.Length; i++)
{
f.Write(data[i][0]);
f.Write(',');
f.WriteLine(data[i][1]);
}
Console.WriteLine(sw.Elapsed);using var f = File.Create("output.bin");
for (var i = 0; i < data.Length; i++)
{
unsafe
{
fixed (int* ptr = data[i])
{
f.Write(new ReadOnlySpan<byte>(ptr, 8));
}
}
}(int, int)[] data = Enumerable.Range(0, 100000000).Select(_ => (Random.Shared.Next(), Random.Shared.Next())).ToArray();
Console.WriteLine("start");
var sw = Stopwatch.StartNew();
using var f = File.Create("output.bin");
unsafe
{
fixed ((int, int)* ptr = data)
{
f.Write(new ReadOnlySpan<byte>(ptr, data.Length * 8));
}
}
Console.WriteLine(sw.Elapsed);using var f = File.Create("output.bin");
for (var i = 0; i < data.Length; i++)
{
f.Write(MemoryMarshal.AsBytes(data[i].AsSpan());
}