public async Task <int> ReadAsync_Parallel(int totWorkerThreads, BufferedStreamReaderConfig config_r, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_parallel); } try { int res = 0; using (StreamChain sc1 = new StreamChain()) { Stream s = sc1.ComposeChain( usingMemoryStream ? ms_parallel : File.Open(tmpFilename_parallel, FileMode.Open, FileAccess.Read, FileShare.None), config_r); using (var dmp = new CollectionDeserializerAsync <T>(new FIFOWorkerConfig(totWorkerThreads), opts_standard)) await foreach (var i in dmp.DeserializeAsync(s)) { res ^= i.Item.DoStuff(); } } return(res); } finally { if (usingMemoryStream) { ms_parallel.Flush(); ms_parallel.Position = 0; } } }
public async Task WriteAsync_Parallel(int totWorkerThreads, BufferedStreamWriterConfig sw_cfg, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } else { ms_parallel.SetLength(ms_parallel.Length); ms_parallel.Position = 0; } FileHelper.FlushFileCache(tmpFilename_parallel); using (StreamChain sc = new StreamChain()) { Stream s = sc.ComposeChain( usingMemoryStream ? ms_parallel : File.Open(tmpFilename_parallel, FileMode.Create, FileAccess.Write, FileShare.None), sw_cfg); using (var smp = new CollectionSerializerAsync <T>(s, new FIFOWorkerConfig(totWorkerThreads), new BatchSizeEstimatorConfig(), opts_standard)) foreach (var obj in objArr) { await smp.SerializeAsync(new Frame <T>(obj)); } } if (usingMemoryStream) { ms_parallel.Flush(); ms_parallel.Position = 0; } }
public async Task <int> ReadAsync_Baseline(BufferedStreamReaderConfig config_r, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } try { int res = 0; using (StreamChain sc1 = new StreamChain()) { Stream s = sc1.ComposeChain(usingMemoryStream ? ms_baseline : File.Open(tmpFilename_baseline, FileMode.Open, FileAccess.Read, FileShare.None), config_r); using (var streamReader = new MessagePackStreamReader(s, true)) while (await streamReader.ReadAsync(CancellationToken.None) is ReadOnlySequence <byte> msgpack) { var obj = MessagePackSerializer.Deserialize <Frame <T> >(msgpack, opts_standard, CancellationToken.None).Item; res ^= obj.DoStuff(); } } return(res); } finally { if (usingMemoryStream) { ms_baseline.Flush(); ms_baseline.Position = 0; } } }
public async Task WriteAsync_Baseline(BufferedStreamWriterConfig sw_cfg, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } else { ms_baseline.SetLength(ms_baseline.Length); ms_baseline.Position = 0; } using (StreamChain sc = new StreamChain()) { Stream s = sc.ComposeChain( usingMemoryStream ? ms_baseline : File.Open(tmpFilename_baseline, FileMode.Create, FileAccess.Write, FileShare.None), sw_cfg); for (int ix = 0; ix < objArr.Length; ix++) { T obj = objArr[ix]; await MessagePackSerializer.SerializeAsync(s, new Frame <T>(obj), opts_standard); } } if (usingMemoryStream) { ms_baseline.Flush(); ms_baseline.Position = 0; } }
public void Write_Baseline(BufferedStreamWriterConfig sw_cfg, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } else { ms_baseline.SetLength(ms_baseline.Length); ms_baseline.Position = 0; } using (StreamChain sc = new StreamChain()) { Stream s = sc.ComposeChain( usingMemoryStream ? ms_baseline : File.Open(tmpFilename_baseline, FileMode.Create, FileAccess.Write, FileShare.None), sw_cfg); Type t = typeof(T); foreach (T obj in objArr) { model.SerializeWithLengthPrefix(s, obj, t, PrefixStyle.Base128, 1); } } if (usingMemoryStream) { ms_baseline.Flush(); ms_baseline.Position = 0; } }
public async Task WriteAsync_Parallel(int totWorkerThreads, BufferedStreamWriterConfig sw_cfg, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } else { ms_parallel.SetLength(ms_parallel.Length); ms_parallel.Position = 0; } FileHelper.FlushFileCache(tmpFilename_parallel); var opts = new FrameParallelOptions(totWorkerThreads, opts_standard.WithResolver(FrameResolverPlusStandarResolver.Instance)); using (StreamChain sc = new StreamChain()) { Stream s = sc.ComposeChain( usingMemoryStream ? ms_parallel : File.Open(tmpFilename_parallel, FileMode.Create, FileAccess.Write, FileShare.None), sw_cfg); await MessagePackSerializer.SerializeAsync(s, obj_parallel, opts); } if (usingMemoryStream) { ms_parallel.Flush(); ms_parallel.Position = 0; } }
public async Task <int> ReadAsync_Parallel(int totWorkerThreads, BufferedStreamReaderConfig config_r, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_parallel); } var opts = new FrameParallelOptions( totWorkerThreads, opts_standard.WithResolver(FrameResolverPlusStandarResolver.Instance)); try { using (StreamChain sc1 = new StreamChain()) { Stream s = sc1.ComposeChain( usingMemoryStream ? ms_parallel : File.Open(tmpFilename_parallel, FileMode.Open, FileAccess.Read, FileShare.None), config_r); var obj = await MessagePackSerializer.DeserializeAsync <T_Parallel>(s, opts); return(obj.DoStuff()); } } finally { if (usingMemoryStream) { ms_parallel.Flush(); ms_parallel.Position = 0; } } }
public async Task <int> ReadAsync_Baseline(BufferedStreamReaderConfig config_r, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } try { using (StreamChain sc1 = new StreamChain()) { Stream s = sc1.ComposeChain( usingMemoryStream ? ms_baseline : File.Open(tmpFilename_baseline, FileMode.Open, FileAccess.Read, FileShare.None), config_r); var obj = await MessagePackSerializer.DeserializeAsync <T_Baseline>(s, opts_standard); return(obj.DoStuff()); } } finally { if (usingMemoryStream) { ms_baseline.Flush(); ms_baseline.Position = 0; } } }
public int Read_Baseline(BufferedStreamReaderConfig config_r, bool usingMemoryStream) { if (!usingMemoryStream) { FileHelper.FlushFileCache(tmpFilename_baseline); } try { Type t = typeof(T); int res = 0; using (StreamChain sc1 = new StreamChain()) { Stream s = sc1.ComposeChain(usingMemoryStream ? ms_baseline : File.Open(tmpFilename_baseline, FileMode.Open, FileAccess.Read, FileShare.None), config_r); do { object obj = model.DeserializeWithLengthPrefix(s, null, t, PrefixStyle.Base128, 1); if (obj is T objT) { res ^= objT.DoStuff(); } else if (obj is null) { break; } else { throw new Exception("unexpected obj type deserialized"); } } while (true); } return(res); } finally { if (usingMemoryStream) { ms_baseline.Flush(); ms_baseline.Position = 0; } } }