雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2007-02-12

パフォーマンス改良の手法  パフォーマンス改良の手法 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  パフォーマンス改良の手法 - 雲雀は高く空を舞い  パフォーマンス改良の手法 - 雲雀は高く空を舞い のブックマークコメント

ユーザのプログラムのパフォーマンスの解析

    • Profile
    • tic/toc

ループのベクトル

配列の前もってメモリを割り当てる

倍精度でない行列の前もっての設定

double でないタイプの行列をホールドすることで、メモリブロックを前もって割り当てる場合、repmat を使うよりも、よりメモリ効率が良くなり、しばしば高速になります。

下のステートメントは、zeros を使って、uint8 の100行100列の前もって設定します。まず、double のフル行列を作成し、uint8 行列に変換します。これは、不必要に時間とメモリを使います。

A = int8(zeros(100));

repmat を使って、double のものを一つだけ作成します。それで、必要になるメモリを減らします。

A = repmat(int8(0), 100, 100);
配列を拡大する必要がある場合に、repmat を使用

repmat は、拡張する配列に対して、メモリの連続するブロックを確保しようとします。

高速化する他の方法

高速化のために、ループをMEX-ファイルでコード化
ファンクションは、スクリプトより速い

スクリプトが、MATLAB で使われる場合はいつも、メモリにロードされ、一度に一つのラインが処理されます。一方、ファンクションは、擬似コードにコンパイルされ、メモリにロードされます。

load と save は、ファイルI/O関数より高速です。
大きなバックグラウンドプロセスを避ける
トラックバック - http://chick.g.hatena.ne.jp/allegro/20070212
テクノラティプロフィール