private static void Main() { var serializer = new ProtoBufSerializationEngine(); // the protobuf serializer might not be thread-safe var safeSerializer = new ConcurrentSerializationEngine(serializer); var list = new List <TestClass>(); for (var i = 0; i < COUNT; i++) { var c = new TestClass { Name = "N" + i, Address = "A" + i }; list.Add(c); } ShowTimeWithoutOpsPerSec("Overall - 1", () => { Run($"Sequentially writing and reading {COUNT} records", () => Generate1(@"d:\temp\1.tmp", safeSerializer, list, SeqForLoop)); Verify1(@"d:\temp\1.tmp", safeSerializer, list); Run($"Multi-threaded writing and reading {COUNT} records", () => Generate1(@"d:\temp\2.tmp", safeSerializer, list, ParForLoop)); Verify1(@"d:\temp\2.tmp", safeSerializer, list); }); ShowTimeWithoutOpsPerSec("Overall - 2", () => { Run($"Sequentially writing and reading {COUNT} records", () => Generate2(@"d:\temp\1.tmp", safeSerializer, list, SeqForLoop)); Verify2(@"d:\temp\1.tmp", safeSerializer, list); Run($"Multi-threaded writing and reading {COUNT} records", () => Generate2(@"d:\temp\2.tmp", safeSerializer, list, ParForLoop)); Verify2(@"d:\temp\2.tmp", safeSerializer, list); }); }
public void GenericAppendOnlyFileSmokeTest() { var stream = new MemoryStream(); var data = new StreamAccessor(stream); var file = new LowLevelAppendOnlyFile(data); var serializer = new ProtoBufSerializationEngine(); // the protobuf serializer might not be thread-safe var safeSerializer = new ConcurrentSerializationEngine(serializer); var sut = new GenericAppendOnlyFile <TestClass>(file, safeSerializer); sut.Append(new TestClass { Name = "Marcel", Address = "Kennesaw, GA" }); sut.Append(new TestClass { Name = "Gigi Meseriasu", Address = "Washington, DC" }); var r1 = sut.Read(0); Assert.AreEqual("Marcel", r1.Name); Assert.AreEqual("Kennesaw, GA", r1.Address); var rs = sut.ReadFrom(0).ToList(); var r2 = rs[1]; Assert.AreEqual("Gigi Meseriasu", r2.Name); Assert.AreEqual("Washington, DC", r2.Address); var index = sut.GetIndex(); Assert.AreEqual(2, index.Length); Assert.AreEqual(0, index[0]); }