static void Bench(object data, ITranscoder transcoder, int repeat) { // warmup and copy var item = transcoder.Serialize(data); var ___ = transcoder.Deserialize(item); var comparer = System.Collections.StructuralComparisons.StructuralEqualityComparer; if (!comparer.Equals(data, ___)) { throw new Exception("failed"); } var items = Enumerable.Range(0, repeat).Select(_ => { return(new CacheItem(item.Flags, new ArraySegment <byte>(item.Data.Array.ToArray(), item.Data.Offset, item.Data.Count))); }).ToArray(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); var sw = Stopwatch.StartNew(); for (int i = 0; i < repeat; i++) { var _ = transcoder.Serialize(data); } sw.Stop(); Console.WriteLine("S " + transcoder.GetType().Name + ":" + (int)sw.Elapsed.TotalMilliseconds); sw.Restart(); foreach (var x in items) { var _ = transcoder.Deserialize(x); } sw.Stop(); Console.WriteLine("D " + transcoder.GetType().Name + ":" + (int)sw.Elapsed.TotalMilliseconds); Console.WriteLine("Size:" + item.Data.Count); }
static void Bench(object data, ITranscoder transcoder, int repeat) { // warmup and copy var item = transcoder.Serialize(data); var ___ = transcoder.Deserialize(item); var comparer = System.Collections.StructuralComparisons.StructuralEqualityComparer; if (!comparer.Equals(data, ___)) throw new Exception("failed"); var items = Enumerable.Range(0, repeat).Select(_ => { return new CacheItem(item.Flags, new ArraySegment<byte>(item.Data.Array.ToArray(), item.Data.Offset, item.Data.Count)); }).ToArray(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); var sw = Stopwatch.StartNew(); for (int i = 0; i < repeat; i++) { var _ = transcoder.Serialize(data); } sw.Stop(); Console.WriteLine("S " + transcoder.GetType().Name + ":" + (int)sw.Elapsed.TotalMilliseconds); sw.Restart(); foreach (var x in items) { var _ = transcoder.Deserialize(x); } sw.Stop(); Console.WriteLine("D " + transcoder.GetType().Name + ":" + (int)sw.Elapsed.TotalMilliseconds); Console.WriteLine("Size:" + item.Data.Count); }