私は2つの配列を持っています。私はCOMPARE-OBJECTでいくつかの成功を収めましたが、大きな配列では遅すぎます。この例では、$ ALLVALUESと$ ODDは私の2つの配列です。PowerShellで2つの大きなテキスト配列を比較する
これは、FINDSTR exを使用してこれを効率的に行うことができました。 FINDSTR/V /G:ODD.txt ALLVALUES.txt> EVEN.txt FINDSTRはこれを110,000要素で2秒以内に終了しました。 (ディスクからの読み書きが必要)
私はALLVALUES.txtの中でODD.txtと一致しなかったものすべてを私に与えるFINDSTRのパフォーマンスに戻ろうとしています。このケース)
注:この質問はODDまたはEVENに関するものではなく、必要に応じてすばやく視覚的に確認できる実用的な例です。
ここに私が演奏しているコードがあります。 COMPARE-OBJECTを使って、私のコンピュータ上のFINDSTRに対して200,000秒か2秒かかった。私は、これを行うもっとエレガントな方法があると考えていますPowerShell。ご協力いただきありがとうございます。
# ------- Build the MAIN array
$MIN = 1
$MAX = 100000
$PREFIX = "AA"
$ALLVALUES = while ($MIN -le $MAX)
{
"$PREFIX{0:D6}" -f $MIN++
}
# ------- Build the ODD values from the MAIN array
$MIN = 1
$MAX = 100000
$PREFIX = "AA"
$ODD = while ($MIN -le $MAX)
{
If ($MIN%2) {
"$PREFIX{0:D6}" -f $MIN++
}
ELSE {
$MIN++
}
}
Measure-Command{$EVEN = Compare-Object -DifferenceObject $ODD -ReferenceObject $ALLVALUES -PassThru}
投稿されたハッシュメソッドは非常に高速です。答えてくれてありがとう!合理的なスピードで検討する他の方法? – BEEBUG
私はCompare-StringArrayを追加し、ハッシュセットコードを改善しました。 – wOxxOm