0

n次元ベクトル用のライブラリを書き始めました。

このライブラリでサポートしたい設計機能がいくつかあります。

  • メモリ レイアウトは連続しています。これは、メモリの共有、ネットワーク経由での送信、およびファイルへの保存が、ポインターを渡すだけの問題であるためです。
  • 次元が異なれば、サポートされる要素のサイズも異なります (つまり、バイトでもバイトでも[0][0]かまいません)。1[1][0]2

特定の次元のベクトルのメモリ レイアウトがどのように見えるかをいくつか表現した後、構造をレイアウトするには 2 つの方法があることに気付きました。

これが最初の方法です。どちらの表現も [2][4][3] 配列の視覚化です。

 ---------------------------
| index             | 0:0:0 |
| elementSize       |       |
| elementCount      |       |
| expansionBoundary |       |
| slotCount         |       |
 ---------------------------
 ---------------------------
| index             | 1:0:0 |
| elementSize       |       |
| elementCount      |       |
| expansionBoundary |       |
| slotCount         |       |
 ---------------------------
     ---------------------------
    | index             | 0:0:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 0:1:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 0:2:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 0:3:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 1:0:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 1:1:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 1:2:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
     ---------------------------
    | index             | 1:3:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 0:0:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:0:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:0:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:1:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:1:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:1:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:2:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:2:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:2:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:3:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:3:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:3:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:0:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:0:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:0:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:1:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:1:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:1:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:2:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:2:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:2:2 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:3:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:3:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:3:2 |
        | Element           |       |
         ---------------------------

これが2番目の方法です。

 ---------------------------
| index             | 0:0:0 |
| elementSize       |       |
| elementCount      |       |
| expansionBoundary |       |
| slotCount         |       |
 ---------------------------
     ---------------------------
    | index             | 0:0:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 0:0:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:0:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:0:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 0:1:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 0:1:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:1:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:1:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 0:2:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 0:2:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:2:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:2:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 0:3:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 0:3:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:3:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 0:3:2 |
        | Element           |       |
         ---------------------------
 ---------------------------
| index             | 1:0:0 |
| elementSize       |       |
| elementCount      |       |
| expansionBoundary |       |
| slotCount         |       |
 ---------------------------
     ---------------------------
    | index             | 1:0:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 1:0:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:0:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:0:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 1:1:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 1:1:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:1:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:1:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 1:2:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 1:2:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:2:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:2:2 |
        | Element           |       |
         ---------------------------
     ---------------------------
    | index             | 1:3:0 |
    | elementSize       |       |
    | elementCount      |       |
    | expansionBoundary |       |
    | slotCount         |       |
     ---------------------------
         ---------------------------
        | Index             | 1:3:0 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:3:1 |
        | Element           |       |
         ---------------------------
         ---------------------------
        | Index             | 1:3:2 |
        | Element           |       |
         ---------------------------

あるレイアウトを他のレイアウトよりも選択する際に、特定の利点/欠点はありますか?

4

0 に答える 0