PowerShell: производительность вызовов методов .NET - PullRequest
1 голос
/ 03 марта 2009

Можно ли вызвать метод .NET из PowerShell с ранним связыванием?

У меня есть конвейерный скрипт, который вызывает один метод .NET в process {...}. PowerShell вызывает этот метод через отражение, и сейчас Invoke (не сам метод, а просто вызов отражения) занимает 70% от общего времени выполнения.

Метод всегда один и тот же, поэтому я бы предпочел попросить PowerShell вообще не использовать отражение.

1 Ответ

3 голосов
/ 03 марта 2009

Я считаю, что единственными типами вызовов методов, которые связаны с ранней привязкой в ​​PowerShell или, по крайней мере, с ранней привязкой, насколько это возможно в динамическом языке, являются следующие

  1. CmdLets.
  2. Статические методы

Я не так уверен насчет # 2. Я полагаю, что они все еще должны использовать отражение, чтобы добраться до основного метода.

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

...