2
大きなワードリストで重複を削除する最も速い方法は?
大きなワードリストを重複排除する必要があります。いくつかのコマンドを試して、こことここでいくつかの研究を行いました。そこでは、単語リストを重複排除する最も速い方法はawkを使用しているように見えることを説明しています。 awk-> O(n)?sort-> O(n log n)? しかし、これは真実ではないようだ。私のテスト結果は次のとおりです。 sort -u input.txt -o output.txt 実数0m12.446s ユーザー0m11.347s sys 0m0.906s awk '!x[$0]++' input.txt > output.txt 実数0m47.221s ユーザー0m45.419s sys 0m1.260s したがって、sort -uを使用すると3.7倍高速になります。どうしてこれなの?重複排除を行うためのさらに速い方法はありますか? ***********アップデート******** 誰かがコメントで指摘したように、私の単語リストはすでにある程度ソートされている可能性があります。この可能性を排除するために、このPythonスクリプトを使用して 2つのワードリストを生成しました。 List1 = 7 Mb List2 = 690 Mb 結果AWK: List1を リアル0m1.643s ユーザー0m1.565s sysの0m0.062s List2 実2m6.918s ユーザー2m4.499s sys 0m1.345s 結果SORT: List1 …
14
bash
awk
performance
sort