FORTRAN Ⅳat TECHFORTRAN Ⅳ - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト650:デフォルトの名無しさん 09/10/28 20:57:22 allocateを使うとパフォーマンスが落ちるって本当ですか? 実際に使われるサイズに関わらず? 651:デフォルトの名無しさん 09/10/29 00:56:45 >>650 多分誤解。 静的配列と比べるならば、それは実行時にアロケート処理するのだから余計な時間はかかるだろう。 しかし、それは計算時間に比べれば瑣末なはず。 POINTERで配列をとった場合は、メモリーの割付が連続したメモリー領域になるとは限らないので 最適化がバリバリなされず、ALLLOCATEでとった場合(連続にメモリーを取る)とくらべて パフォーマンスが落ちる可能性があるとは言われている。 652:651 09/10/29 02:15:09 書き方が悪かった。 POINTERにALLOCATEしたときは連続にメモリーを取るだろうが、 POINTERには、ストライド付きのとびとびメモリーを指示させることもできるので、 最適化には制限が係ることがあるようである。 653:デフォルトの名無しさん 09/10/29 10:15:13 >>651,652 なる~。Fortran77で i=10000 call hairetu(i) subroutine hairetu(i) integer i real data(i) みたいな使い方で任意の大きさの配列data()をサブルーチン内で扱えるけど、 これがメモリ上でキチンと並んでいるとは限らない(とんだ部分 の取り扱いはOSがするのか?)からね。 77より後のallocatable属性は、出来るだけ連続して確保してね、の おなじないというか願掛けと思えばいいのだろうな。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch