Beispiel #1
0
 /// <summary>
 /// Registers an internal url converter.
 /// </summary>
 /// <param name="urlConverter"></param>
 public static void Register(IInternalUrlConverter urlConverter)
 {
     _converters.Add(urlConverter);
 }
Beispiel #2
0
        private static void MeasureConvertionPerformance(Dictionary <string, Measurement> measurements, IInternalUrlConverter converter, Action action)
        {
            string key = converter.GetType().FullName;

            var stopwatch = new Stopwatch();

            long memoryBefore = GC.GetTotalMemory(false);

            stopwatch.Start();
            action();
            stopwatch.Stop();

            long memoryTotal = GC.GetTotalMemory(false) - memoryBefore;
            long totalTime   = (stopwatch.ElapsedTicks * 1000000) / Stopwatch.Frequency;

            if (memoryTotal < 0)
            {
                memoryTotal = 0;
            }

            Measurement existingRecord;

            if (measurements.TryGetValue(key, out existingRecord))
            {
                existingRecord.MemoryUsage += memoryTotal;
                existingRecord.TotalTime   += totalTime; // NOTE: Loosing some of the precision here
            }
            else
            {
                measurements.Add(key, new Measurement(key)
                {
                    MemoryUsage = memoryTotal, TotalTime = totalTime
                });
            }
        }