• ベストアンサー

awkスクリプトの実行が遅い

awkで書かれたスクリプトについて、 配列の要素が多くなればなるほど、 急に実行時間が遅くなります。 (要素が1個→約4分  要素が24個→約8分  要素が144個→約20分) 仕方のないことなのでしょうか? C言語やPerlでは、どうでしょうか? 教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

>C言語やPerlでは、どうでしょうか? 一般論ですが、 C言語であれば、圧倒的に速くなります。(約100倍以上) perlでも10倍以上速くなります。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

どんなスクリプトかわかりませんが, 全ての要素に対して処理するなら「要素数が多ければ時間がかかる」のは当然. むしろ 要素が1個→約4分 要素が24個→約8分 要素が144個→約20分 ということは, 1個あたりだと加速してますよね.

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

どんなスクリプトを書いたのかの情報もなしには何も言えませんよ。 配列の添え字に何を使っているのかとか、どのように配列を使っているのとか。 そもそも一個だけの要素の配列って? >C言語やPerlでは、どうでしょうか? Cが引き合いに出てくるということは整数が添え字ですか? それなら早くなるかもしれませんねえ。

関連するQ&A

  • スクリプト実行言語にPerlを指定する方法

    ubuntu で (1)apache2 をインストール (2)peal をインストール しました。 その後、スクリプト実行言語にPerlを指定する方法がよくわからなく困っています。 ネットを見ながらやっていますが、スクリプト実行言語にPerlを指定する方法がわかれば先に進めます。どうやればいいのでしょうか?

    • ベストアンサー
    • Perl
  • awkの使い方について教えてください。

    awkとperlなどの初心者です。 使い方が分かっていないのですが、 例えば出力のフィールドセパレータを,に変更するには どうすればいいでしょうか? awk '{OFS=,;print}' fileなどとやってみますが、 うまくいきません。2つ以上のコマンドを実行するときの 文法がわかっていないような気がするのですが。 あとperlでよくみかけるperl -neのnは何でしょうか? man perlとやってみても-wと-eの意味しかのっていなくて なからないのですが。ご教授下さい。

  • AWkの配列についてのデバッグ

    awkプログラミングを勉強しています。配列を使ったスクリプトがうまく動作しないのでネットで検索していると"配列を使っていてうまく動かない場合、awk コマンドの引数に --dump-variables を指定することで、利用している変数および配列の一覧を awkvars.out というファイルに出力することができます。” という書き込みを見つけました。この機能を使用してみたいのですが、うまくいきません。 スクリプトに #!/nin/awk -f --dump-variables としてもなにも特別な動作はしてくれませんでした。

  • Perlスクリプトが実行できない??どうやったら実行できる?

    前にPerlスクリプトを実行する際に、 まず、PCに何かインストールしてから 実行できるようになったのを覚えています。 パソコンを再インストールしたのですが、 何をインストールすれば実行できるように なるか忘れてしまいました。 実行すると ERROR:cmd~~:Cannot start command. (perl.exe ~~.pl 1152 864) と出ています。 どなたか教えてください。 windows2000を使用しています。

    • ベストアンサー
    • Perl
  • シェルスクリプトの実行

    一台目のLINUX上でプログラムを実行しLANでつながれたもう1台のLINUXにあるシェルスクリプトを実行するにはC言語でどのようにプログラミングをすれば可能でしょうか? プログラムと同じ場所ならsystem(コマンド)で出来るんですよね? telnetとか使いますか?それとももっと単純に出来るのでしょうか?

  • 【シェルスクリプト】awkの結果を変数に格納したいです。

    【シェルスクリプト】awkの結果を変数に格納したいです。 パイプを使って、3つのコマンドを実行し、変数に格納したいです。 command1 | command2 | command3 command2 には grep が、 command3 には awk が入ります。 よろしくお願いします。

  • いろいろな言語に関する質問(スクリプト)

    ★現在、とあるソフトを開発していますが、このソフトで処理する  動作を外部の手続きファイル(スクリプト)を読み込むことで機能  拡張できるように考えています。 ・そこで、ちょっとした専用のスクリプト言語を開発しようと思って  います。質問内容はどの言語でも良いですが、それぞれの言語で  便利そうな仕組みを教えて下さい。たとえば、私は C/C++ 言語しか  使ったことがありませんが『if』、『switch』、『while』、『for』  のほかに BASIC やそれ以外の言語より、『until』、『repeat』や  C/C++の『do-while』をまねた、独自の『do-until』やバッチ処理の  『FOR』コマンドに似せた『fortable』の制御を可能にしようと思っ  ています。 ・基本的に文法構造の制御に関する仕組みを考えているので、関数の  機能ではありません。ただし、変数に関する扱い方や宣言の仕方は  いろいろとアイディアを出してくれてかまいません。何でもね。 ・今、ちょっとだけ『Perl』の文法を検索して言語使用などを見ましたが  もっと良い文字列(配列など)の操作仕組みがあれば、アイデアとして  取り入れたいと思います。整数に関する変数の扱い方も募集します。 ・以上。制御系を中心にスクリプト言語にあれば便利そうな仕組みや  サイト、または言語名を教えて下さい。お願い致します。

  • PowerShellのスクリプト実行について

    PowerShellのスクリプト実行について PowerShellの勉強をしていますが、スクリプトを実行できません。。。 なんか、スクリプトの環境変数を設定するようですが、どこにも 設定方法がないです。。。。 もちろん、Set-ExecutionPolicy Unrestrictedは実行してあります。 以下日付と時間を表示するだけのスクリプトです。 ---------test.ps1--------- get-date get-time ---------------------------- スクリプトファイルの置き場所 ⇒ C:\script-test\test.ps1 ちなみに、スクリプトファイルを置いたディレクトリに移動して 実行しても、以下のようなメッセージが出て実行できませんでした。。 用語 'C:\script-test' は、コマンドレット、関数、スクリプト ファイル、または操作 可能なプログラムの名前として認識されません。名前が正しく記述されていることを確 認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく ださい。 発生場所 行:1 文字:15 + C:\script-test <<<< .\test.ps1 + CategoryInfo : ObjectNotFound: (C:\script-test:String) []、Comma ndNotFoundException + FullyQualifiedErrorId : CommandNotFoundException どなたかご教授下さい。

  • PHPをバッチスクリプトのように実行する方法

    PHPをちょっと勉強してみようと思っています。 言語仕様をさらっと勉強したいだけなので Webサーバーを立ち上げるまではしたくないと思っています。 で、PHPをバッチスクリプトのように実行したいと思っています。 PerlやWSH(JScript, VBS)、シェル、Winコマンドバッチ等のように。 しかし、少し調べた限りではPHPをバッチのように起動する方法は分かりませんでした。 PHPをバッチスクリプトのように実行する方法はありますでしょうか? 存在しないのでしょうか?もしあるのならその方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 外部スクリプトを切り離して実行させたい

    負荷が高まった時に何が原因か調べる為に外部スクリプトを呼び出したいのですが、 スクリプトの中で外部スクリプトを呼び出すと、実行が終わるまで待ってしまいます。 たとえばこの様な1.shを実行した場合 1.shの中身 #!/bin/sh AVERAGE=`uptime|awk '{print $(NF-2)}'|sed 's|\.||;s|,||'` if [ $AVERAGE -gt 500 ] ; then 2.sh fi ~略~ 負荷が高まり,2.shを実行して、fiの後の処理は2.shが終わるまで待つ事になってしまいます。 2.shの実行を切り離してfiの後の処理もスムーズに行いたいです。 現在、切り離しの為、メール送信させてトリガで2.shを動かしてますが、 mailユーザで2.shを実行すると、動作が非常に遅いのです。 root権限で、かつ画面がある状態で実行すると高速に処理されるようでした。 メール送信時に実行するスクリプトを1.5.shに、sudoを利用して root権限で実行されるようにしましたが、画面がない為か処理が遅いのです。 1.5.shの中身 sudo su - root -c "2.sh" tty?のようなことだと考えてますが(アバウトですいません)画面がない所から実行すると よくないようで、メールトリガのやり方でなく、1.shから2.shを実行する時に切り離すことが できないだろうかと考えました。 画面が問題なら解決しないかもしれないですが、 どなたかご存知の方がいたら教えてくださいませ。

専門家に質問してみよう