Я не уверен, но вы можете попробовать myIntArray.SelectMany(BitConverter.GetBytes).ToArray()
(время выполнения 4700мс)
есть другой подход
var binFormatter = new BinaryFormatter();
var mStream = new MemoryStream();
binFormatter.Serialize(mStream, myIntArray);
mStream.ToArray();
(время выполнения 2700 мс)
Это самый быстрый подход, который я нашел и проверил с помощью средства профилирования наблюдателя: время выполнения 1500 мс (без сторонних компонентов), другие способы - около 1700 мс (MemoryMarshal), метод «для каждого» - 2700 мс
int maxValue = Int32.MaxValue / 50;
int[] myIntArray = Enumerable.Range(0, maxValue).ToArray();
var path = "e:\\temp\\1.test";
using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create)))
{
int intLength = myIntArray.Length;
writer.Write(intLength);
byte[] bytes = new byte[intLength * sizeof(int)];
Buffer.BlockCopy(myIntArray, 0, bytes, 0, sizeof(byte));
writer.Write(bytes);
}