ファイルの実行を高速化する Linux コマンドはありますか?

ファイルの実行を高速化する Linux コマンドはありますか?

perl ファイルを高速に実行するための Linux コマンドがあるかどうか知りたいです。

実行時間を確認するために次のコマンドを使用しました。

time ./rspd.pl

出力:

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

一部の Perl スクリプトは完了するまでに長い時間がかかります。このような場合、他の Linux コマンドを使用して実行を高速化できますか?

答え1

場合によります。

一般的に言えば、いいえ。それはできません。

ただし、場合によってはそれが可能です。たとえば、文字列に対して高度な操作を実行し、各行を個別に変更するプログラムがあるとします。その場合、parallelプログラムを並列に実行するように設計された GNU を使用できます。

しかし、知っておく必要があるのはプログラムが何を行うか、ボトルネックは何かを調べてください。一部のプログラムはデフォルトで小さなサブプロセスに分割されるため、速度は向上しません。一部のプログラムはディスクを大量に使用しますが、これがボトルネックであるため、速度は向上しません。一部のプログラムには、分割されたファイルでは使用できないロジックがあります。

GNU Parallel はファイルを小さな部分に分割し、各部分でスクリプトを実行して結果をマージします。これは、awk最初の列と 2 番目の列を変更するようなものを実行する場合はうまく機能します。N に変更するプログラムを実行する場合は、あまりうまく機能しません。ここで、N はこれまでにdog単語が出現した回数です。dog

答え2

唯一の答えはいいえPerl スクリプトのような任意の実行可能ファイルを高速化するための汎用コマンドは存在しません。

を高速化するには、rspd.plまず何をしているかを知る必要があります。なぜ遅いのでしょうか? CPU、RAM、ネットワーク、ディスクI/O? これは「プロファイリング」と呼ばれ、たとえば https://stackoverflow.com/questions/4371714/how-do-i-profile-my-perl-programs

答え3

いいえ。

最善の策は、コマンドを使用して異なるスレッドに分散し、異なるコアに分散して実行速度を上げることです。たとえば、GNU パラレル

答え4

すべての Perl ライブラリを RAM に保存します。これにより、Perl スクリプトが大量の Perl ライブラリを使用する場合に実行が高速化されます。

関連情報