c# stopwatch.startnew () всегда возвращает 0 - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть l oop, для которого я хочу измерить скорость:

        private static string[] sequentialTest(string[] thisstringlist)
    {
        var watch = Stopwatch.StartNew();

        string[] returnList = new string[2150];
        for (int i = 0; i < thisstringlist.Length; ++i)
        {
            int thisI = i;
            returnList[i] = thisstringlist[i] + "pluuus this";
        }
        int thiss = 0;

        var elapsedMs = watch.ElapsedMilliseconds;
        Console.WriteLine("execution time" + watch.ElapsedMilliseconds);

        return returnList;

    }

Должно быть очень просто, секундомер должен просто измерить, сколько времени занимает эта операция, но я продолжаю возвращать 0

Я также попытался вставить thread.sleep (), просто чтобы заставить код занять некоторое время, но это тоже не работает

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020
 private static string[] sequentialTest(string[] thisstringlist)
    {
     Stopwatch stopwatch = new Stopwatch();
      stopwatch.Start();
      string[] returnList = new string[2150];
        for (int i = 0; i < thisstringlist.Length; ++i)
        {
            int thisI = i;
            returnList[i] = thisstringlist[i] + "pluuus this";
        }
        int thiss = 0;
       Console.WriteLine("execution time" + stopwatch.Elapsed.TotalMilliseconds);
      stopwatch.Stop();
   }
0 голосов
/ 17 февраля 2020

Как следует из названия, секундомер должен быть остановлен , чтобы увидеть все эти значения, как показано в документации. Поэтому, чтобы это исправить, напишите watch.Stop(); перед var elapsedMs = watch.ElapsedMilliseconds;.

Примечание : в более новых версиях. NET framework stop не требуется.

Также проверьте документы

...