Bigarray を使用する必要があるのはいつですか?またその理由は何ですか?

StackOverflow https://stackoverflow.com/questions/1661063

  •  12-09-2019
  •  | 
  •  

質問

Bigarray モジュールに関するドキュメントはやや曖昧です。このモジュールの配列の目的は「大きな配列」を保持することであると述べられていますが、「大きな配列」が何を意味するのかは実際には定義されていません。通常の配列ではなく Bigarray を使用する必要があるのはどのような場合ですか?特定の数を超えると Bigarray を使用する必要がある要素はありますか?数千単位でしょうか?何百万?何十億?

Bigarray が大きな配列の処理に優れているのはなぜでしょうか?通常の配列の処理が優れている理由は何ですか...大きくない配列?

役に立ちましたか?

解決

これに対する答えを見つけました(から このページ):

bigarray ライブラリは、大規模な多次元数値配列を実装します。これらの配列は、「モジュール配列」で説明されている標準の Caml 配列と区別するために「ビッグ配列」と呼ばれます。「大きな配列」と標準の Caml 配列の主な違いは次のとおりです。

  • Caml 配列とは異なり、大きな配列にはサイズの制限がありません (浮動小数点配列は 32 ビット プラットフォームで 2097151 要素に制限され、他の配列タイプは 4194303 要素に制限されます)。
  • 大きな配列は多次元です。1 ~ 16 の任意の数の次元がサポートされます。対照的に、Caml 配列は単次元であり、多次元配列を配列の配列としてエンコードする必要があります。
  • 大きな配列には整数と浮動小数点数のみを含めることができますが、Caml 配列には任意の Caml データ型を含めることができます。ただし、大きな配列は、特に標準の Caml 型である double に加えて、単精度浮動小数点や 8 ビットおよび 16 ビット整数などの「小さな」型をサポートするため、整数および浮動小数点要素のスペース効率の高いストレージを提供します。 -精度浮動小数点数と 32 ビットおよび 64 ビット整数。
  • 大きな配列のメモリ レイアウトは、C および Fortran の配列のメモリ レイアウトと完全に互換性があり、データをまったくコピーすることなく、Caml コードと C / Fortran コード間で大きな配列をやり取りできます。
  • 大きな配列は、サブ配列の抽出や特定の次元に沿った多次元配列の「スライス」など、通常の配列では効率的に提供できない興味深い高レベルの操作をすべてコピーせずにサポートします。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top