public async Task SetupAsync() { RuntimeTypeModel rtModel = RuntimeTypeModel.Create(); rtModel.Add(typeof(TestStructSmall1)); rtModel.Add(typeof(TestStructSmall2)); rtModel.Add(typeof(TestStructLarge1)); rtModel.Add(typeof(TestClassSmall)); rtModel.Add(typeof(TestClassLarge)); rtModel.RegisterParallelServices <TestClassSmall>(); rtModel.RegisterParallelServices <TestClassLarge>(); model = rtModel.Compile(); tmpFilesRoot = Path.Combine(Path.GetTempPath(), "slStreamBenchmarks"); if (!Directory.Exists(tmpFilesRoot)) { Directory.CreateDirectory(tmpFilesRoot); } tmpFilename_baseline = Path.Combine(tmpFilesRoot, $"tmp_PB_PS_baseline_{typeof(T).Name}.dat"); tmpFilename_parallel = Path.Combine(tmpFilesRoot, $"tmp_PB_PS_parallel_{typeof(T).Name}.dat"); objArr = GetRandInstanceArr(BlockSize, TotBlocks); ms_baseline = new MemoryStream(); ms_parallel = new MemoryStream(); // generate binary files and memstreams to work with Write_Baseline(null, usingMemoryStream: true); await WriteAsync_Parallel(1, null, usingMemoryStream : true); Write_Baseline(null, usingMemoryStream: false); await WriteAsync_Parallel(1, null, usingMemoryStream : false); var File_size_baseline = new FileInfo(tmpFilename_baseline).Length; var File_size_parallel = new FileInfo(tmpFilename_parallel).Length; var Mem_size_padded = objArr.Sum(f => f.GetSize()) + objArr.Length * IntPtr.Size; var Mem_size_padded_SingleItem = objArr.First().GetSize(); Console.WriteLine($"{nameof(T)}: {typeof(T)}"); Console.WriteLine($"Memory size (padded) = {Mem_size_padded / ((double)1024 * 1024):f2} MB"); Console.WriteLine($"Memory size (padded) for 1 item = {Mem_size_padded_SingleItem / (double)1024:f2} KB"); Console.WriteLine($"Baseline file length (no framing data) = {File_size_baseline / ((double)1024 * 1024):f2} MB"); Console.WriteLine($"File length (with framing data) = {File_size_parallel / ((double)1024 * 1024):f2} MB"); }