Есть ли какая-нибудь команда Linux для ускорения выполнения файлов?

Есть ли какая-нибудь команда Linux для ускорения выполнения файлов?

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

Для проверки времени выполнения я использовал следующую команду:

time ./rspd.pl

выход:

1.003u 0.480s 3:34.90 0.6% 0+0k 56+5520io 0pf+0w

Некоторые из моих скриптов Perl выполняются очень долго. Могу ли я в таких случаях использовать какую-либо другую команду Linux, чтобы ускорить выполнение?

решение1

Это зависит.

В общем-то, нет. Так делать нельзя.

Однако иногда вы можете. Например, предположим, что у вас есть программа, которая выполняет некоторые сложные операции со строками и изменяет каждую строку независимо. Тогда вы можете использовать GNU parallel— программу, разработанную для параллельного запуска программ.

Однако вам нужно знатьчточто делает ваша программа, и что является узким местом. Некоторые программы по умолчанию делят себя на более мелкие подпроцессы, поэтому вы не получите никакого ускорения. Некоторые программы интенсивно используют диск, и поскольку это узкое место, вы не получите никакого улучшения. Некоторые программы имеют логику, которую нельзя использовать для разделенных файлов.

GNU Parallel делит файл на меньшие части и запускает скрипт для каждой части, объединяя результаты. Это работает хорошо, если вы запускаете что-то вроде awkтого, что изменяет первый и второй столбец. Это работает не так хорошо, когда вы запускаете программу, которая изменяет dogна N, где N — это количество раз, когда вы уже видели слово dog.

решение2

Единственный ответ:нет. Не существует универсальной команды для ускорения другого произвольного исполняемого файла, например, вашего скрипта Perl.

Чтобы сделать ваш rspd.plбыстрее, вы должны сначала узнать, что он вообще делает. Почему он медленный? Процессор, ОЗУ, сеть или дисковый ввод-вывод? Это называется «профилирование», см. например https://stackoverflow.com/questions/4371714/how-do-i-profile-my-perl-programs

решение3

Нет.

Лучшее, что вы можете сделать, это использовать команду для распределения в разных потоках и, следовательно, может быть, разных ядрах, заставляя его работать быстрее. Например, взгляните наGNU-параллельный.

решение4

Сохраните все библиотеки Perl в оперативной памяти, чтобы выполнение скрипта Perl было быстрее, если они используются в большом количестве.

Связанный контент