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);
        }
Example #2
0
        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);
        }