Как измерить фактическое время ЦП, потраченное на выполнение кода с помощью секундомера?

Из docs:

Если кодировка не указана, возвращается исходный буфер.

blockquote>

объясните . Укажите допустимую кодировку, например utf-8, в качестве второго параметра после имени файла. Например,

fs.readFile("test.txt", "utf8", function(err, data) {...});

0
задан Johnny 20 February 2019 в 13:44
поделиться

2 ответа

Если вы находитесь в режиме отладки, вы можете использовать средства диагностики

Когда ваше приложение запущено, перейдите в меню:

Отладка -> Windows -> Показать средства диагностики [112 ]

0
ответ дан Eman Hamed 20 February 2019 в 13:44
поделиться

Если задача не вычисляется процессором, время запуска секундомера будет потрачено впустую.

Если вы посмотрите на исходный код System.Diagnostics.Stopwatch, вы увидите, что он на самом деле не работает, нет потерь. У него есть две метки времени start и end, и он фактически считает elapsed путем вычисления и суммирования периодов между ними. Обратите внимание, что вы можете запускать и останавливать Stopwatch несколько раз, он будет измерять кумулятивный период между этими прогонами. Таким образом, ответ: да , он также вычислит время, когда поток неактивен.

Также от Microsoft вы должны быть осторожны при работе Stopwatch в многопроцессорной среде:

На многопроцессорном компьютере не имеет значения, на каком процессоре работает поток. Однако из-за ошибок в BIOS или на уровне аппаратных абстракций (HAL) вы можете получить разные результаты синхронизации на разных процессорах. Чтобы указать привязку процессора к потоку, используйте метод ProcessThread.ProcessorAffinity.


С другой стороны, если вы хотите измерить, сколько времени ЦП тратит на выполнение кода, взгляните на следующую ссылку: ExecutionStopwatch . Он в основном использует использование GetThreadTimes и измеряет, сколько времени потратил поток, работая вместе в режиме ядра или пользователя.

0
ответ дан Johnny 20 February 2019 в 13:44
поделиться