Melhorias ao Mecanismo do PowerShellPowerShell Engine Improvements

As seguintes melhorias ao mecanismo principal do PowerShell foram implementadas no WMF 5.1:The following improvements to the core PowerShell engine have been implemented in WMF 5.1:

DesempenhoPerformance

O desempenho melhorou em algumas áreas importantes:Performance has improved in some important areas:

  • InicializaçãoStartup
  • O pipelining para cmdlets como ForEach-Object e Where-Object é aproximadamente 50% mais rápidoPipelining to cmdlets like ForEach-Object and Where-Object is approximately 50% faster

Alguns exemplos de melhorias (os resultados podem variar dependendo do hardware):Some example improvements (your results may vary depending on your hardware):

CenárioScenario Tempo de 5,0 (ms)5.0 Time (ms) Tempo de 5,1 (ms)5.1 Time (ms)
powershell -command "echo 1" 900900 250250
Primeira execução do PowerShell: powershell -command "Unknown-Command"First ever PowerShell run: powershell -command "Unknown-Command" 3000030000 1300013000
Built do cache de análise de comando: powershell -command "Unknown-Command"Command analysis cache built: powershell -command "Unknown-Command" 70007000 520520
1..1000000 | % { } 14001400 750750

Observação: uma alteração relacionada à inicialização pode afetar alguns cenários sem suporte.Note One change related to startup might impact some unsupported scenarios. O PowerShell não lê mais os arquivos $pshome\*.ps1xml – esses arquivos foram convertidos para C# para evitar sobrecarga de arquivo e CPU do processamento dos arquivos XML.PowerShell no longer reads the files $pshome\*.ps1xml -- these files have been converted to C# to avoid some file and CPU overhead of processing the XML files. Os arquivos ainda existem para dar suporte à V2 lado a lado; portanto, se você alterar o conteúdo do arquivo, ele não terá qualquer efeito na V5, apenas na V2.The files still exist to support V2 side-by-side, so if you change the file contents, it will not have any effect to V5, only V2. Observe que alterar os conteúdos desses arquivos nunca foi um cenário com suporte.Note that changing the contents of these files was never a supported scenario.

Outra alteração visível é como o PowerShell armazena em cache os comandos exportados e outras informações para módulos instalados em um sistema.Another visible change is how PowerShell caches the exported commands and other information for modules that are installed on a system. Antes, esse cache era armazenado no diretório $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\CommandAnalysis.Previously, this cache was stored in the directory $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\CommandAnalysis. No WMF 5.1, o cache é um único arquivo $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\ModuleAnalysisCache.In WMF 5.1, the cache is a single file $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\ModuleAnalysisCache. Veja Cache de análise do módulo para obter mais detalhes.See Module Analysis Cache for more details.