加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python中函数查找操作的时间复杂度是多少

发布时间:2020-12-20 12:31:44 所属栏目:Python 来源:网络整理
导读:我想知道,因为一个常见的优化策略是在变量中“缓存”查找,然后使用该变量调用方法/函数,查找操作有多贵? 这就是我所说的“缓存”查找,以防它不是正确的术语: class TestClass: def myMethod(self): printMethod = self.printMethod for i in range(0,1000)
我想知道,因为一个常见的优化策略是在变量中“缓存”查找,然后使用该变量调用方法/函数,查找操作有多贵?

这就是我所说的“缓存”查找,以防它不是正确的术语:

class TestClass:

    def myMethod(self):
       printMethod = self.printMethod
       for i in range(0,1000):
          printMethod(i)

    def printMethod(self,i):
       print i

解决方法

节省的时间并不复杂,而是实际时间.在命名空间中查找函数名称只是查找字典中的键,该字典已经是O(1).查找对象上的属性也是字典查找,也是O(1).有一个优化的操作码用于按名称查找局部变量,但仍然不能比O(1)快.

在您的示例中,查找self.printMethod会查找本地(self),然后查找属性(printMethod).这是两次查找.如果将它存储在本地,那么对局部变量printMethod的每次后续访问只是一次查找而不是两次.那仍然是O(1),但它更快,因为它是一个较小的常数.

This question进一步讨论了名称查找如何在Python中工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读