public void Parcel_DeepClone_Benchmark_Parallel() { const int CNT = 100000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); System.Threading.Tasks.Parallel.For(0, CNT, (i) => { var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.AreEqual(p1.GDID, p2.GDID); }); sw.Stop(); Console.WriteLine("NOTE: Core i7 x 6 cores 3.2Ghz 47000+ ops/sec on subsequent runs w/o optimization in non-server GC mode"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void Parcel_DeepClone_Benchmark() { const int CNT = 25000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); for (var i = 0; i < CNT; i++) { var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.AreEqual(p1.GDID, p2.GDID); } sw.Stop(); Console.WriteLine("NOTE: Core i7 3.2Ghz 14000 ops/sec on subsequent runs w/o optimization"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void Parcel_DeepClone_2_Equals_ToString() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsTrue(p1.Equals(p2)); Console.WriteLine(p1.ToString()); }
public void Parcel_DeepClone_1() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.SequenceEqual(p2.Payload)); Assert.AreEqual(p1.GDID, p2.GDID); }