Штраф за производительность C # от добавления секундомера? - PullRequest
0 голосов
/ 29 марта 2012

Какое снижение производительности вызвано добавлением C # Stop Watch к объекту?

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Не должно быть столь значительным в контексте программирования на C #. Если это окажется значительным, пересмотрите ваши потребности / использование секундомера и C #.

Вы всегда можете попытаться сравнить его самостоятельно, реализовав его 1000 раз, рассчитав время, а затем разделив результаты на 1000. Трудно сказать точно, насколько производительность требует этой функции, но вы можете сравнить ее с некоторыми другими простыми операциями. и посмотрим, как это связано.

0 голосов
/ 29 марта 2012
  static void Main(string[] args)
        {
            Worker(1); // jit Warmup
            var stopWatchOfStopwatchStopwatch = System.Diagnostics.Stopwatch.StartNew();
            var stopWatchOfLoop = System.Diagnostics.Stopwatch.StartNew();
            Worker(100000000);
            stopWatchOfLoop.Stop();
            Console.WriteLine("Elapsed of inner SW: " + stopWatchOfLoop.Elapsed.ToString());
            stopWatchOfStopwatchStopwatch.Stop();
            Console.WriteLine("Elapsed of outer SW: " + stopWatchOfStopwatchStopwatch.Elapsed.ToString());

            var stopwatchOfcompareLoop = System.Diagnostics.Stopwatch.StartNew();
            Worker(100000000);
            stopwatchOfcompareLoop.Stop();
            Console.WriteLine("Elapsed of inner SW: " + stopWatchOfLoop.Elapsed.ToString());
        }
        static void Worker(int iterations)
        {
            for (int i = 0; i < iterations; i++)
            {
                Console.WriteLine("bla");
            }
        }

Разница незначительна - но это в значительной степени зависит от ваших целей производительности:)

...