На этом завершается в 2,3 минут на LocalServer:PSRemoting накладных расходов производительность с Get-ChildItem
A: measure-command {$x = invoke-command {gci -recurse "C:\"}}
На этом завершается в 38,4 минут на LocalServer:
B: measure-command {$x = invoke-command -comp LOCALSERVER {gci -recurse "C:\"}}
Почему B так медленнее? Это потому, что «вывод сериализуется в XML, а затем снова воссоздается на объекты», как объясняется here, с B, но не с A? Или что-то еще происходит?
LOCALSERVER запускает Windows 2008R2 с PS v3. В обоих случаях $x.count
- 98973.
Мне было интересно изменить существующий скрипт, чтобы использовать PSRemoting для поиска файлов на удаленных серверах. Я думал, что поиск может завершиться раньше, когда gci работает на удаленной цели. В нескольких тестах поиски на самом деле выполнялись намного дольше с PSRemoting. Я спрашиваю о шлейф-сценарии только потому, что это казалось простейшим случаем; Я видел аналогичные результаты с удаленными серверами. Так что я буду придерживаться UNC поисков пути, как это:
gci -recurse \\REMOTESERVER\C$\folder
... если эти результаты не кажутся странными, а некоторые корректировки по моей конфигурации удаленного взаимодействия или синтаксис может предложить большой прирост производительности?
Я видел сценарии удаленного пса принять навсегда в локальном IDE, но когда побежал через командную строку Powershell они завершают в доле времени ... связано с тем, как обрабатывается потоковая обработка (с учетом изменений поведения IDE x86 или x64, которые я считаю) –
Нет IDE для этих тестов. Я просто набрал 'powershell' в подсказке vanil cmd. – noam