行列の操作において、​行方向優先と列方向優​先のどちらが速いです​か?

39 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team
MathWorks Support Team il 3 Apr 2019
Modificato: MathWorks Support Team il 17 Apr 2024 alle 16:00
コロンを使用して以下のような行列の操作をしています。
 
A(i, :)
 
ループ内で行列 A内のi番目の行のデータを集めているのですが、ループの回数を増やした際にさらに高速に処理をしたいと思います。
 
 

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 17 Apr 2024 alle 0:00
Modificato: MathWorks Support Team il 17 Apr 2024 alle 16:00
2次元またはそれ以上の行列の操作を行う場合、一般的には列方向で行列の要素にアクセスするほうが高速です。
これは、一般的なPCでは例えば行列データの参照など、メモリアクセスの際には高速化のためにキャッシュを使用していますが、MATLABでは行列データを列方向でメモリにストアするため、列方向で行列の要素にアクセスするほうが、キャッシュの効果を得ることができるためです。
 
以下のURLの「Store and Access Data in Columns」の部分もご参考ください。
一般的なPC環境ではCode segment 2のスクリプトのほうが速くなります。これは、内側のfor文で、rを単調増加させる方向(列方向でのアクセス)になっているためです。 
 
 

Più risposte (0)

Categorie

Scopri di più su table in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti


Release

R2008a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!