Birden çok yol PowerShell’de Roma’ya çıkar ve performans farklılıkları

Womanne

Member
Microsoft PowerShell’de genellikle bir hedefe ulaşmanın birkaç yolu vardır. Bazen önemli hız farklılıkları olabilir.


Çoğu pratik PowerShell kullanım senaryosunda, PowerShell’deki hız pek önemli değildir. Ama öyleyse ölçü-komut ile önlem almakta fayda var!

Burada dosya sistemi işlemlerine örnek olarak göstermek istiyorum. Yalnızca alt dizinleri listelemek için (sınıf System.IO.DirectoryInfo) dizinler içinde birkaç alternatif vardır:

(new-object System.IO.DirectoryInfo c:windows).GetDirectories()
dir -Directory
dir | where psiscontainer
dir | where mode -like "*d*"

Sadece dosyaları listelemek için bile (sınıf System.IO.FileInfo) dizinler içinde birkaç alternatif vardır:

(new-object System.IO.DirectoryInfo c:windows).GetFiles()
dir -file
dir | where psiscontainer -eq $false
dir | where mode -notlike "*d*"

Muhtemelen şu anda aklıma gelmeyen başka alternatifler de vardır. Bu yazının yorumlarına bildiğiniz diğer alternatif komutları yazmaktan çekinmeyin.

Yukarıdaki dört alternatifin karşılaştırılması aşağıdaki şekli verir.


Kesin sonuçlar var:

  • Doğrudan .NET sınıf kitaplığını kullanmak açık ara en hızlı çözümdür. PowerShell komutları .NET sınıf kitaplığının bir soyutlaması olduğundan bu beklenen bir durumdur.
  • PowerShell 7’deki komutlar, Windows PowerShell 5.1’dekinden çok daha hızlıdır.
dir için bir takma addır Get-Childitem. doğrudan kullanımı Get-Childitem ölçülebilir bir hız farkına neden olmaz.




PowerShell'de Roma'ya giden çoklu yollar ve performans farklılıkları



Windows PowerShell 5.1: Klasörleri listeleyin





PowerShell'de Roma'ya giden çoklu yollar ve performans farklılıkları



PowerShell 7.2: Klasörleri listeleyin





PowerShell'de Roma'ya giden çoklu yollar ve performans farklılıkları



PowerShell 7.2: Dosyaları listeleme




()



Haberin Sonu
 
Üst