小编Zhe*_*Lin的帖子

在Python中为稀疏数组优化`__getitem__`和`__setitem__`

我正在编写自己的稀疏(一维)数组类,但我遇到了一些性能问题.分析表明其中一个瓶颈是我__getitem____setitem__实现,特别是,似乎其中一个罪魁祸首可能是我的使用isinstance.目前,我有5个来电isinstance__getitem__,我得到CPROFILE(摘录)以下数据:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    86462    0.076    0.000    0.084    0.000 sparse.py:107(__setitem__)
   189730    0.147    0.000    0.166    0.000 sparse.py:45(__getitem__)
   276366    0.028    0.000    0.028    0.000 {built-in method isinstance}

我的__getitem__工具切片和数组访问,所以我怀疑某种类型的内省必要的...但我想知道是否isinstance真的是最好的方法吗?

__setitem__另一方面,我不支持切片(isinstance在任何情况下只调用一次),所以我不知道如何让它更快.每行分析数据如下:

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   108                                              @profile
   109                                              def __setitem__(self, key, value):
   110     88705       121012      1.4     23.0         if not isinstance(key, int):
   111                                                      raise TypeError('list …
Run Code Online (Sandbox Code Playgroud)

python optimization

1
推荐指数
1
解决办法
1377
查看次数

标签 统计

optimization ×1

python ×1