SORU
10 Mart 2011, PERŞEMBE


(Süpürge) PowerShell çıktı görmezden gelmek daha iyi yolu ne

Hadi bir yöntem ya da bir şey döndüren bir Çalıştırın yok diyorsunuz, ama bunu kullanmak için ne ve çıkış için bunu istemezsin istemezsin. Bu iki yol buldum:

Add-Item > $null

[void]Add-Item

Add-Item | Out-Null

EDİT: Teşekkürler üçüncü yol Ocaso.

Sen ne kullanıyorsun? Hangisi daha iyi/temiz yaklaşımdır? Neden?

CEVAP
10 Mart 2011, PERŞEMBE


Ben sadece bildiğim dört seçenekten bazı testler yaptım.

Measure-Command {$(1..1000) | Out-Null}

TotalMilliseconds : 76.211

Measure-Command {[Void]$(1..1000)}

TotalMilliseconds : 0.217

Measure-Command {$(1..1000) > $null}

TotalMilliseconds : 0.2478

Measure-Command {$null = $(1..1000)}

TotalMilliseconds : 0.2122

## Control, times vary from 0.21 to 0.24
Measure-Command {$(1..1000)}

TotalMilliseconds : 0.2141

Ama Out-Null bir şey yükü nedeniyle kullanmanızı öneririm. Bir sonraki önemli şey, benim için, okunabilirlik olurdu. Ben $null yönlendirme $null kendimi eşit ayarlama gibi. [Void], döküm tercih yapıyorum ama yeni kullanıcılar için kod ya bakarak ne kadar anlaşılır olmayabilir.

Ben biraz $null yönlendirme çıkış tercih ederim sanırım.

Do-Something > $null

Edit

Stej tekrar yorumun ardından, boru hatları ile birkaç test daha yapacak daha iyi çıktı Harman yükü izole etmeye karar verdim.

Burada 1000 nesne basit bir boru hattı ile bazı testler.

## Control Pipeline
Measure-Command {$(1..1000) | ?{$_ -is [int]}}

TotalMilliseconds : 119.3823

## Out-Null
Measure-Command {$(1..1000) | ?{$_ -is [int]} | Out-Null}

TotalMilliseconds : 190.2193

## Redirect to $null
Measure-Command {$(1..1000) | ?{$_ -is [int]} > $null}

TotalMilliseconds : 119.7923

Bu durumda, Out-Null 60% masrafı var ve > $null 0.3% hakkında bir yükü vardır.

Ve şimdi basit 100 nesne bir boru hattı ile bazı testler için.

## Control Pipeline
Measure-Command {$(1..100) | ?{$_ -is [int]}}

TotalMilliseconds : 12.3566

## Out-Null
Measure-Command {$(1..100) | ?{$_ -is [int]} | Out-Null}

TotalMilliseconds : 19.7357

## Redirect to $null
Measure-Command {$(1..1000) | ?{$_ -is [int]} > $null}

TotalMilliseconds : 12.8527

Burada tekrar Out-Null ` yükü vardır. > $null 4% hakkında bir yükü vardır. Burada sayıları test etmek için biraz (her biri yaklaşık 5 kez koştu ve Orta yer aldı) çeşitli. Ama Out-Null kullanmak için net bir sebep gösterir bence.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • thewinekone

    thewinekone

    17 Aralık 2005
  • UniqueApps

    UniqueApps

    4 Ocak 2009