Мені потрібно присвятити великий список слів. Я спробував кілька команд і зробив кілька досліджень тут і тут, де вони пояснюють, що, як видається, найшвидшим способом подвоєння списку слів є використання awk.
awk -> O (n)? сортувати -> O (n журнал 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
Тож використання сорту -у в 3,7 рази швидше. Чому це? чи існує ще швидший метод зробити дедуплікацію?
*********** Оновлення ********
Як хтось зазначав у коментарях, можливо, мій список слів вже певною мірою був відсортований. Щоб виключити цю можливість, я створив два списки слів за допомогою цього сценарію python .
Список1 = 7 Мб
Список2 = 690 Мб
Результати AWK:
Список1
реальний 0m1.643s
користувач 0m1.565s
sys 0m0.062s
Список2
реальний
користувач 2m6.918s 2m4.499s
sys 0m1.345s
Результати SORT:
Список1
реальний
користувач 0m0.724s 0m0.666s
sys 0m0.048s
Список2
реальний
користувач 1m27.254s 1m25.013s
sys 0m1.251s