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

39 visualizaciones (últimos 30 días)
MathWorks Support Team
MathWorks Support Team el 3 de Abr. de 2019
Editada: MathWorks Support Team el 17 de Abr. de 2024 a las 16:00
コロンを使用して以下のような行列の操作をしています。
 
A(i, :)
 
ループ内で行列 A内のi番目の行のデータを集めているのですが、ループの回数を増やした際にさらに高速に処理をしたいと思います。
 
 

Respuesta aceptada

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

Más respuestas (0)

Categorías

Más información sobre table en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Productos


Versión

R2008a

Community Treasure Hunt

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

Start Hunting!