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 スクリプトが多くのライブラリを使用すると実行が高速化されます。