Подсчитайте слова: что будет использовать меньше CPU, wc или perl-скрипт?

Моя цель – подсчитать слова в файле при использовании минимально возможного CPU.

Я мог бы использовать команду wc или написать простой скрипт perl для этого, какой из двух вариантов будет менее интенсивным?

3 Solutions collect form web for “Подсчитайте слова: что будет использовать меньше CPU, wc или perl-скрипт?”

Я подозреваю, что wc будет использовать меньше процессорного времени, он написан на C и был тщательно оптимизирован с течением времени. Однако нет причин не проверять это самостоятельно. time позволит сравнить производительность вашего Perl-скрипта с wc . Используя команду time , вы должны получить вывод, например:

 > time wc /usr/share/dict/words 119095 119095 1145922 /usr/share/dict/words wc /usr/share/dict/words 0.03s user 0.00s system 98% cpu 0.030 total 

В этом случае wc использует 0.030 секунд времени процессора.

Как правило, при попытке решить проблему, которая может быть полностью инкапсулирована одним инструментом командной строки, например wc , они более эффективны, чем что-либо еще.

Только тогда, когда вам нужно начать цепочку нескольких «команд» вместе, имеет смысл перевести решение, связав их вместе, на решение проблемы на языке более высокого уровня, таком как Perl, Python или Ruby.

Расходы при объединении команд вместе обычно возникают в форме необходимости повторного продолжения выполнения простых инструментов много раз.

Я согласен с @wingedsubmariner, wc почти наверняка будет быстрее, чем любая версия perl, которую вы готовите:

 $ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" wc /usr/share/dict/words 99171 99171 938848 /usr/share/dict/words 0.02user 0.00system 0:00.02elapsed 86%CPU $ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" \ perl -ane '$k+=$#F+1; END{print "$k\n"}' /usr/share/dict/words 99171 0.09user 0.00system 0:00.09elapsed 96%CPU 
  • Считать количество строк в нескольких файлах
  • как подсчитать общее количество слов в файле?
  • Как добавить число слов в файл без добавления общего количества
  • Количество байтов «ls -l <случайный файл>» по сравнению с «wc -c <random file>»
  • Как я могу разделить большой текстовый файл на куски размером 500 слов?
  • grep с количеством отдельных паттернов
  • Непоследовательное поведение перенаправления ввода
  • Как создать переменную из данных по каналам
  • Как эффективно разделить большой текстовый файл без разделения многострочных записей?
  • Разделить входной файл на X частей общего количества строк / X
  • Как использовать wc и piping для определения количества файлов и каталогов в определенном каталоге?
  • Interesting Posts

    Выполнять поиск по двум спискам

    SSH – packet_write_wait сломанный трубопровод

    xrandr: границы отображения отключены

    Как было изменено резервное копирование непустого каталога и сохранение метаданных, таких как права / файл прав пользователя / файл времени?

    как установить размер блока с помощью команды blockdev

    Как заставить десятичное сложение (# 10) при добавлении чисел с переносом (восьмеричная проблема)

    Debian sudo не работает

    Как создать цикл перенаправления

    Автоматически обновлять билеты на kerberos на экране GNU

    Как я могу вызвать CTRL ^ C из подсказки пароля?

    уменьшение «количества зарезервированных блоков» не отображается в выводе df

    Предотвращение или обнаружение действия каталога изменений в сценарии оболочки

    Изменение числового значения в файле с помощью Vim из сценария

    «Ваше соединение не является приватным» в linux, но нормально в окнах

    Открытие файла с пробелом из Ruby

    Linux и Unix - лучшая ОС в мире.