Самый быстрый способ удаления дубликатов в большом списке слов?

Хорошо, я выяснил проблему. У меня есть символ квадратной скобки" [" в исходном каталоге модуля

LD [M]  /home/farshad/Work/CSP/boards/imx6q/ar6k3/ar6003_3.1_RC_Linux_release_[posted_2011_8_19_olca3.1RC_553/imx6build/host/os/linux/ar6000.o  

Удаление этого от пути работало хорошо, и я получил свои объектные файлы модуля ядра. Я переименовал

ar6003_3.1_RC_Linux_release_[posted_2011_8_19_olca3.1RC_553 

кому:

ar6003, 

и также протестированный с

ar6003_3.1_RC_Linux_release_posted_2011_8_19_olca3.1RC_553

Оба хорошо работали. Я основывался на Ubuntu 10.04. Мой коллега создал из того же исходного наличия" [" символ в своем пути на Ubuntu 11.04, и объектный файл модуля ядра создавал приятно, это также предлагает, чтобы измененное поведение grep / нашло / awk или такая утилита среди их различных версий, которые система сборки ядра использует, приводя к этой проблеме.

С уважением, Farrukh Arshad.

14
13.04.2017, 15:36
3 ответа

Вы задаете неправильный вопрос или задаете вопрос неправильно и в неправильном стеке, это лучший вопрос для программирования / переполнения стека чтобы люди могли дать вам ответы на основе алгоритмов, используемых в awk и sort.

PS: также проделайте необходимое с nawk, mawk и gawk, чтобы дать нам больше деталей, чтобы «войти в зону»;) и проделайте 100 раз каждое с минимальным, максимальным, средним и стандартным отклонением.

В любом случае, возвращаясь к рассматриваемому вопросу, из CompSci 210, речь идет об используемых алгоритмах. Сортировка использует несколько, в зависимости от размеров и ограничений памяти, с которыми она сталкивается, чтобы сохранять файлы на диск во временных файлах для сортировки слиянием после того, как закончится память, и вам нужно будет изучить исходный код, чтобы увидеть, что конкретная команда sort (1) используется в конкретной ОС, в которой вы ее используете, но по опыту она загружается в память в максимально возможной степени, выполняет быструю сортировку, записывает на диск, повторяет промывку и В конце он выполнит сортировку слиянием небольших отсортированных файлов.Итак, здесь у вас будет O (n * log2 (N)) для частей, а затем приблизительная операция слияния O (n * log (n))

awk: Механизм x [$ 0] ++ - " допустим «использовать хеширование. НО проблема с хешированием, предполагаемой операцией поиска O (1), - это коллизии и обработка коллизий. Это может вызвать проблему, когда данные не распределены должным образом, не заполняются корзины и т. Д., А в больших списках хеширование может быть большой проблемой с памятью, если обработка коллизий не выполняется правильно (и вам может потребоваться настроить алгоритмы хеширования для ожидаемых данных), а затем вам нужно посмотреть на производительность фактических функций хеширования, и тогда O (1) может быть ближе к O (log (n)) для вставок (т.е. O (1) для первого поиска, и если он НЕ существует, вы добавляете его, который может быть O (log (n))), и тогда n * O (1) становится * O (log (n)) = > O (n * log (n)), не говоря уже о том, что вы тоже делаете что-то «интерпретируемым» образом :)

3
27.01.2020, 19:52

Разница в скорости заключается в том, что «sort» - это команда ( ссылка ), тогда как «awk» - это язык программирования ( ссылка ).

Команда 'sort' принимает ввод и возвращает вывод. В то время как awk - это язык программирования, который сначала интерпретирует код (команду терминала), а затем начинает обработку на нем. Просто как тот.

-2
27.01.2020, 19:52

Я бы внимательно посмотрел, как использовать sort -u(, возможно, с другими переключателями! )для этой задачи, прежде чем приступить к работе с каким-нибудь серьезным языком сценариев (Python/Perl/Raku, весьма вероятно, после сортировки ), и только после того, как я увидел абсолютную потребность в максимальной скорости, я стал бы рассматривать другие альтернативы.

0
18.02.2020, 03:08

Теги

Похожие вопросы