アプリ版:「スタンプのみでお礼する」機能のリリースについて

fortranで長いプログラムを書き、コンパイルはできたのですが
実行の際、実行時間がかなりかかり実行がなかなか終わりません。

プログラムが長いと言っても、30分以上かかるようなプログラムではないと思うのですが。

実行時間が長くかかってしまう原因についてご存知の方は教えて下さい。
よろしくお願いします。

A 回答 (3件)

#1さんが言ってる無限ループの他には、


何らかの理由でループのカウンターが壊れていてとんでもない回数のループになっているとか、
入力待ちになっているのに気が付いていないとか、
が考えられますね。
紙上デバックもいいけど、デバッガがあるのならそれを使えばよいし、デバッガが近くになくても適当なところにPRINT文を入れてどこまで進んでいるのかを確認するだけでも見直すべき範囲が絞り込めます。
    • good
    • 0

普通のFortranプログラムの実行時間は、作った人が考えるよりはるかに短いです。


せいぜい数秒で全ての処理が終わってしまうと思います。

私も初めて作った時は10分で終わらなくて、30分回しても終わらなかったことがありました。
他の回答者様の言われるように無限ループに入っていました。
修正したところ、1000分の1秒以下で処理が終わりました。
    • good
    • 0

単純に無限ループに入りこんでいる。


フォートランコンパイラはそれほど頭がよくない場合があって、無限ループを見落とすことがあります。

まずはソースコードを紙上でデバックして下さい。単純なデバックでは見つからなくても、無限ループがあるかも、と思って探すと一発で見つかる場合が多いです。

この回答への補足

do ループの中にwrite(*,*)文を書きどこで問題がおきているのか確認しました。
やはり、ループが終わらない状態でした。

プログラムの構造は単純に書くと、
program main

call sub 1
call sub 2

stop
end


sub1

do
call sub 3
do; do;do

enddo;enddo;enddo;enddo

return
end sub1


sub 3

do; do; do; do

enddo; enddo; enddo; enddo

return
end sub 3

sub 1でsub 3を呼び出しています。
これが原因になる事はあるのでしょうか?
よろしくお願いします。

補足日時:2010/10/07 18:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!