我需要能夠?qū)存儲(chǔ)numpy array在dict緩存中。哈希速度很重要。該array代表indicies,所以在對(duì)象的真實(shí)身份并不重要,值。交互性不是問(wèn)題,因?yàn)槲抑粚?duì)當(dāng)前值感興趣。為了將其存儲(chǔ)在中,我應(yīng)該進(jìn)行什么哈希處理dict?我當(dāng)前的方法是使用str(arr.data),它比md5我的測(cè)試更快。我從答案中合并了一些示例,以了解相對(duì)時(shí)間:In [121]: %timeit hash(str(y))10000 loops, best of 3: 68.7 us per loopIn [122]: %timeit hash(y.tostring())1000000 loops, best of 3: 383 ns per loopIn [123]: %timeit hash(str(y.data))1000000 loops, best of 3: 543 ns per loopIn [124]: %timeit y.flags.writeable = False ; hash(y.data)1000000 loops, best of 3: 1.15 us per loopIn [125]: %timeit hash((b*y).sum())100000 loops, best of 3: 8.12 us per loop對(duì)于這種特定用例(少量索引),似乎arr.tostring提供了最佳性能。盡管對(duì)只讀緩沖區(qū)進(jìn)行散列操作本身很快,但設(shè)置可寫(xiě)標(biāo)志的開(kāi)銷(xiāo)實(shí)際上使其變慢了。
添加回答
舉報(bào)
0/150
提交
取消