キャッシュの目的numpy
array
で a に aを格納できる必要があります。dict
ハッシュ速度は重要です。
はarray
指標を表すため、オブジェクトの実際の ID は重要ではありませんが、値は重要です。現在の値のみに関心があるため、可変性は問題ではありません。
に格納するには、何をハッシュする必要がありdict
ますか?
私の現在のアプローチは、私のテストstr(arr.data)
よりも高速なを使用することです。md5
相対時間のアイデアを得るために、回答からいくつかの例を組み込みました。
In [121]: %timeit hash(str(y))
10000 loops, best of 3: 68.7 us per loop
In [122]: %timeit hash(y.tostring())
1000000 loops, best of 3: 383 ns per loop
In [123]: %timeit hash(str(y.data))
1000000 loops, best of 3: 543 ns per loop
In [124]: %timeit y.flags.writeable = False ; hash(y.data)
1000000 loops, best of 3: 1.15 us per loop
In [125]: %timeit hash((b*y).sum())
100000 loops, best of 3: 8.12 us per loop
この特定のユース ケース (指標の小さな配列)arr.tostring
では、最高のパフォーマンスが得られるようです。
読み取り専用バッファーのハッシュ自体は高速ですが、書き込み可能フラグを設定するオーバーヘッドにより、実際には遅くなります。