Welcome to Our Website

クイックヒット:配列へのアイテムの追加とパフォーマンスの見て

最近のパフォーマンス比較の記事にいくつかのコメントがありましたが、これらの同様の記事のいくつかを書くことを奨励しました。 したがって、それ以上の騒ぎなしに、配列に項目を追加することと、パフォーマンスの面でどのアプローチが良いかを見始めましょう。通常、PowerShellで配列に項目を追加するときに見る最も一般的なアプローチは、+=演算子を使用することです。,

 $a = @()$a += 'data'$a$a += 'test'$a

最初に配列を初期化する必要がありましたが、そうでなければ、テキストを追加しようとすると、代わりに連結テキストとして扱われますが、これはこの例で探しているものではありません。 私が言ったように、これは私が見る一般的なアプローチですが、それは必然的に最速のアプローチですか? まあ、答えはノーです。

ArrayListを使用する

パフォーマンスを向上させるための答えはArrayListの使用です。 PowerShellからパフォーマンスを向上させることでますます多くのことがわかるように、通常はsomeを使用する動きが見られます。,Netインスタンスは、実際のPowerShellコマンドまたは演算子を使用して実行できる同様の操作を実行します。 したがって、上記で行ったことは、次のように行うことができます。

 $a = New-Object System.Collections.ArrayList$a.Add('data')$a.Add('test')$a

アイテムを追加するたびに出力される0と1は、アイテムがコレクションに追加されたインデックスを示します。 したがって、0インデックスに’data’が追加され、1インデックスに’test’が追加されました。 このでかなり面倒私の意見で汚染され、パイプラインを望ましくない。 これを回避するには、データがNullの場所に送信されることを確認します。,

私たちの前に設定されたアイテムのコレクションを作成するための二つのオプションがありますが、次の質問はどちらが最も速いですか? 見つけよう!

私はArrayListが毎回勝ったと言っているわけではありません…待って、私はそれを言っています! 各コレクションに追加されたアイテムの総数が増加するにつれて、+=が終わり近くでかなり劇的に増加するアプローチごとに時間も増加しました。 +=演算子で起こっていることは、演算子を使用するたびに実際に新しい配列を作成して、新しいアイテムをコレクションに追加できることです。, 正確に効率的ではありませんが、それは仕事を終わらせます。 ArrayListアプローチでは、コレクションにアイテムを追加するので、それは見つかりません。

これらのタイプのパフォーマンステストと同様に、単純な極端なタイプの状況をカバーしたので、PowerShellスクリプトから可能な限りすべてのミリ秒を絞り込みたい場合は、間違いなくArrayListアプローチを検討したいと思うでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です