1

テーブルの作成時に を指定して、pytables/HDF5 コードのパフォーマンスを改善しようとしてchunkshapeいます。chunkshapeパラメータの実際の寸法や形式がわかりません。コードから、最終的に単一の要素を持つタプルになることがわかります。

この単一の要素は、行数、バイト数、または何であると想定されていますか?

私の特定の問題は、20 列の HDF5 テーブルを作成する既存のコードがあることです。各列がディスクに連続して格納されるように、テーブルのチャンクを変更したいと思います。したがって、列全体を一度に読み取るように最適化します。

チャンクシェイプを 20 (列数) に設定してみましたが、これにより列全体を読み取るパフォーマンスが劇的に低下しました。チャンク形状を単一行の幅 (バイト単位) に設定する必要がありますか?

次の場合、chunkshapeがどうあるべきかを知りたいだけです:

  1. コラム全体をできるだけ早く読みたい。
  2. テーブル内の列数を正確に知っています。
  3. 下位互換性の理由から、単純にテーブルを変更して既存の行を列として、またはその逆にすることはできません。
4

1 に答える 1

4

chunkshapeinは、ディスクに連続して格納する必要がある行と列ごとの要素数を指定します(PyTablesこれがタプルである理由です)。

したがって、たとえば、データセットが 10,000 x 20 (10,000 行、20 列) で、常に一度に 1 つの列にアクセスする場合、最適なチャンク サイズが与えられれば、各チャンクにはできるだけ多くの列を含める必要があります (こちらを参照)。詳細については)。

行数がわかっていて、それほど大きくない場合は、chunkshape を指定できます(10.000,1)(またはより少ない行)。したがって、20 列すべてにアクセスすると、20 回のアクセスが必要になります。

于 2012-09-19T08:00:02.830 に答える