Главная > Powershell > Ускоряем работу с Powershell

Ускоряем работу с Powershell

Наверное правильнее будет сказать не как ускорить работу с Powershell, а как её не замедлить. Вообще на эту тему можно написать целую книгу, но сегодня только одна маленькая заметка.

Недавно попался на глаза хороший пример.

Допустим есть какой-то большой массив, например вот такой:

$array = 1..10000

И нужно выполнить какое-либо действие над каждым элементом массива, в простейшем случае вывести его на экран. Т.е. делаем цикл по всей длине массива, в котором делаем то, что нам нужно.

Например вот так:

for ($i = 0; $i -lt $array.Count; $i++)
    {
        $array[$i]
    }

Или вот так:

$length = $array.Count
    for ($i = 0; $i -lt $length; $i++)
    {
        $array[$i]
    }

Казалось бы разница несущественная, и первый вариант проще. Однако измерения показывают, что первый вариант выполняется приблизительно 388 мс, в то время как второй всего 69 мс, т.е. больше чем в 5 раз быстрее. Разница заключается в том, что в первом варианте условие выхода из цикла  вычисляется при каждом проходе по циклу (а именно каждый раз определяется длина массива), а во втором длина массива определена заранее, и в цикле фигурирует только конкретное число.

Реклама
Рубрики:Powershell Метки:
  1. 22/01/2017 в 17:15

    Как Вы выполнили подсчет времени выполнения конструкции?

    • 23/01/2017 в 10:28

      При помощи командлета Measure-Command. После имени командлета в фигурные скобки ставите тот блок, время выполнения которого хотите измерить:

      Measure-Command {Get-Service}
      

      Имейте в виду, что на выходе получите объект TimeSpan, все свойства которого Вам скорее всего не понадобятся (дни, часы и т.д.). Так что советую выбирать конкретное свойство (чаще всего, пожалуй, интересуют секунды и миллисекунды):

      (Measure-Command {Get-Service}).Milliseconds
      
  1. 24/09/2013 в 10:49

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: