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

Python中函数查找 *** 作的时间复杂度是多少,第1张

概述我想知道,因为一个常见的优化策略是在变量中“缓存”查找,然后使用该变量调用方法/函数,查找 *** 作有多贵? 这就是我所说的“缓存”查找,以防它不是正确的术语: 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中工作.

总结

以上是内存溢出为你收集整理的Python中函数查找 *** 作的时间复杂度是多少全部内容,希望文章能够帮你解决Python中函数查找 *** 作的时间复杂度是多少所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存