绕过 dok_matrix.get 类型检查

Bypass dok_matrix.get type checking

我程序的 运行 时间的 16% 花在了 scipy/sparse/sputilsisintlike() 函数中。所有对 isintlike() 的调用都来自对 dok_matrix.get() 的调用(占 运行 时间的 20%)。我知道我用 get() 调用的索引是整数,所以我实际上不需要类型检查。

我试图通过使用 x[coords] 而不是 x.get(coords) 来绕过它,但这实际上减慢了我的程序。我猜它在幕后调用 get() 增加了开销。

我不打算减少对 dok_matrix.get() 的调用次数,所以这是目前的瓶颈。有什么方法可以绕过这种类型检查吗?

你可以直接调用dict基础class方法,绕过类型检查:

dict.get(dok_matrix, coords)