logo

ジュリアで部分配列を迅速に参照する方法 📂ジュリア

ジュリアで部分配列を迅速に参照する方法

概要

ジュリアで、viewは配列のサブアレイを素早く参照させるデータ構造だ。実際に使う立場から見れば面倒で差がないように見えるけど、怠惰に参照されてもっと軽い配列を返す。だから、基本的なレベルで最適化されたジュリアのコードでは、@viewsというマクロを簡単に見つけることができる。

コード

行列Mのサブマトリックスを参照してみよう。

関数形式:view()

view(A, inds...)

  • Ainds...に従ったviewを返す。

しかし、この形式は一般的にコードを読みにくくするため、好まれない。次のマクロを使用すると、viewを使用しながらも基本的なジュリアの文法と大きな違いはない。

マクロ:@view

@viewマクロは、サブアレイを参照する文脈のコードにviewが適用されたかのように替えるマクロだ。

ブロック全体に適用:@views

@viewsマクロは、続くブロック全体に@viewを適用する。これのおかげで、viewなしで快適に書いた関数の前に@views f(x) ... end@viewsだけを付ければ、自動的にviewが適用される。

全体のコード

速度比較

fcopy()fview()は、まったく同じ機能を持つ関数だが、速度に違いがある。一見、速度は似ているように見えるが、ほとんどがコンパイル時間だ。これを除いて、単純な実行時間だけを比較すると、約4倍の差がある。

環境

  • OS: Windows
  • julia: v1.7.0