おそらく愚かな質問、1つか2つの操作...profileとawkコマンド? awkのコマンドは、通常はかなりコンパクトで行うので、
は、プロファイルする方法やawkコマンドはありますか?すなわち、もしgsub、split、連想配列のソートを使っているのなら、どの部分が全体の操作を不安定にしているのかを簡単に知る方法はありますか?
EDIT:具体的には、呼び出された回数ではなく、各サブコマンドの実行時間を探しています。これは可能ですか?
おそらく愚かな質問、1つか2つの操作...profileとawkコマンド? awkのコマンドは、通常はかなりコンパクトで行うので、
は、プロファイルする方法やawkコマンドはありますか?すなわち、もしgsub、split、連想配列のソートを使っているのなら、どの部分が全体の操作を不安定にしているのかを簡単に知る方法はありますか?
EDIT:具体的には、呼び出された回数ではなく、各サブコマンドの実行時間を探しています。これは可能ですか?
Here is the fine documentation about profiling gawk。 gawkのmanページから
ほぼ完璧です。どのくらいの時間を各コマンドに費やすかを教えてください。 – lonestar21
その場合は、upvoteボタンを使用してください。とにかく:あなたはいつでもあなたが望む時にsystime()を印刷することができます(EPOCHからの秒数が表示されます)。 –
この機能はカバレッジテストに似ています。 – Kaz
:
pgawkはgawkのプロファイリングのバージョンです。プログラムがよりゆっくり実行されることを除いて、すべての方法で がgawkと同じです。実行されると、awkprof.outファイル内に自動的に 実行プロファイルが生成されます。下記の --profileオプションを参照してください。
したがって、GNU実装を使用している場合、答えは「はい」になります。
そして、あなたの次の質問をforstallするため、manページが
dgawkはawkのデバッガであると言うことになります。直接プログラムを実行する代わりに、 はAWKソースコードをロードし、デバッグコマンドの入力を求めます。 gawkおよびpgawkと異なり、dgawkは-fオプション付きの で提供されたAWKプログラムソースのみを処理します。デバッガは、GAWKで文書化されています。Effective AWK プログラミング。
a debugger similar to gdb, called dgawkのawk実装があります。
各サブコマンドの実行時間が必要だとします。 言語に関係なく、これを行う方法は次のとおりです。
時間が十分に稼働するように十分な負荷を与え、時計(N秒)で時間を設定します。 もう一度やって、実行中はCtrl + Cを押します。 バックトレースを実行してスタックを調べ、テキストエディタにコピーします。 10のように何度か実行します。
どのサブコマンドも、その時間の間、スタックに表示されます。 したがって、sort
が時間の50%(N/2秒)を取っている場合、それらのサンプルの約5つに表示されます。
これは、時間のかかる大きな人物ではなく、小さな人物であることを示しています。私はあなたが大きなものを探していると仮定します。
(これは正確ではないと言われることもありますが、時間は間違いなく正確ではありません - 必要はありません。必要な精度は場所にあります。それはそれです。)
追加:ほぼpgawkでこれを行います。プロファイリングモードでプログラムを実行すると、Ctrl-C(または何でも)を押すたびに、コールスタックが出力ファイルに出力されます。唯一の問題は、関数名を表示しますが、実際に必要な行は表示されません。
gprof用のgawkのプロファイリングバージョンを作成するか、カーネルベースのoprofileを使用してください。スクリプトとそのデータに応答してgawkのさまざまな内部関数にどれくらいの時間が費やされているかを詳細に見ることができます。 gsub
とsplit
のような機能は、gawk
内の機能にマップされます。インスタンスgsub
およびその他の機能については
がこのソースファイルにdo_sub
関数によって処理されます。
http://git.savannah.gnu.org/cgit/gawk.git/tree/builtin.c
ですから、do_sub
に費やされているどのくらいの時間を探します。
gawkを-pg
GCCオプションでコンパイルしてリンクしたいとします。プログラムが正常に実行されると、gprof
からレポートを生成するプロファイリングファイルgmon.out
がダンプされます。
私はoprofileも強く推奨しますが、この回答では範囲外です。
これは間違いなく最も近いことです実際にこれを行うより徹底的な例を与えることができますか、それともリンクするのですか?私が正しく理解していれば、インタプリタに関する情報からコードに関するプロファイリング情報を推測することを提案しています。世界で最も直感的なこと。 – Stephenr
Hmmm ...プロファイルに合計時間を追加すると、gawkにとって妥当なサイズの貢献になる可能性があります。 – dmckee