protected void RecordRunResults(string serializerName, object serialziedDto, Action serializeFn, Action deSerializeFn) { var dtoString = serialziedDto as string; var dtoBytes = serialziedDto as byte[]; var totalSerializationTicks = GetTotalTicksTakenForAllIterations( serializeFn, serializerName + " Serializing"); var totalDeserializationTicks = GetTotalTicksTakenForAllIterations( deSerializeFn, serializerName + " Deserializing"); var result = new SerializersBenchmarkEntry { Iterations = this.MultipleIterations.Sum(), ModelName = this.ModelName, SerializerName = serializerName, SerializedBytesLength = dtoString != null ? Encoding.UTF8.GetBytes(dtoString).Length : dtoBytes.Length, TotalSerializationTicks = totalSerializationTicks, TotalDeserializationTicks = totalDeserializationTicks, }; TestResults.Add(result); Log("Len: " + result.SerializedBytesLength); Log("Total: " + result.AvgTicksPerIteration); }
private static List <SerializersBenchmarkEntry> GetCombinedResults( IEnumerable <List <SerializersBenchmarkEntry> > textFixtureResults) { var combinedBenchmarksMap = new Dictionary <string, SerializersBenchmarkEntry>(); var orderedList = new List <string>(); foreach (var benchmarkEntries in textFixtureResults) { var skipIfOneSerializerFailed = benchmarkEntries.Any(x => !x.Success); if (skipIfOneSerializerFailed) { continue; } foreach (var benchmarkEntry in benchmarkEntries) { SerializersBenchmarkEntry combinedEntry; if (!combinedBenchmarksMap.TryGetValue(benchmarkEntry.SerializerName, out combinedEntry)) { orderedList.Add(benchmarkEntry.SerializerName); combinedEntry = new SerializersBenchmarkEntry { Iterations = benchmarkEntry.Iterations, SerializerName = benchmarkEntry.SerializerName, ModelName = "All Models" }; combinedBenchmarksMap[combinedEntry.SerializerName] = combinedEntry; } combinedEntry.SerializedBytesLength += benchmarkEntry.SerializedBytesLength; combinedEntry.TotalSerializationTicks += benchmarkEntry.TotalSerializationTicks; combinedEntry.TotalDeserializationTicks += benchmarkEntry.TotalDeserializationTicks; } } var orderedCombinedBenchmarks = new List <SerializersBenchmarkEntry>(); foreach (var serializerName in orderedList) { orderedCombinedBenchmarks.Add(combinedBenchmarksMap[serializerName]); } CalculateBestTimes(orderedCombinedBenchmarks); return(orderedCombinedBenchmarks); }