2017-10-13 5 views
0

Powershellには、ファイルが存在する場合は何かをするスクリプトがあり、そうでない場合はメッセージを表示します。これら二つはまったく同じことを行うIF/ELSE評価では、どのコードがより高速に実行されますか:IFの大きなブロック、またはELSEの大きなブロック?

IF ((Test-Path $path_to_file) -eq $FALSE) {write-host "File doesn't exist"} 
ELSE {run elaborate code} 

私にできること
IF (Test-Path $path_to_file) {run some elaborate code} 
ELSE {write-host "File doesn't exist"} 

または:私は2つの方法でそれを書くことができます。処理速度には違いがありますか(「精巧なコード」は長いテキストファイルを解析する長いコードです)。

+0

'{run elaborate code}'は 'ScriptBlock'です(中括弧で囲まれています)。 'ScriptBlock'は必要なときにのみ解釈されます。 ''ファイルが存在しない ''が '' {{精巧なコード} ''が評価されていないときに何の違いもないことを意味します。パフォーマンステストでは、同じ条件フォーマット 'IF((Test-Path $ path_to_file)-eq $ True){ある精巧なコードを実行する}}を使用する必要があります。 '良い比較を得るための最初の方法です。 – iRon

答えて

2

文は一度実行しても関係なく一度だけ実行されるため、後でコードのランタイムに影響を与えるべきではありません。

if (x) { <#short#> } else { 
    #Long 
} 

これは、単一のラインだ場合、あなたはそれをリードバックしようとしたときelseは、コードの長いブロックの最後に接続されている箇所を探して終わるません一般的に、より読みやすいです。

パフォーマンスの変更がある場合は、上記のステートメントの可読性が重要なほど重要ではない可能性があります。

「意味のある」コードの反復、文字列の印刷と比較して、IfまたはElseのコードが無視できる(avg 0.038s)の違いと1つの結果に信頼性がなくなっていない場合の違いは、この問題を考えるときにパフォーマンスについて考えることさえしないでください。

関連する問題