装饰器给Python函数调用增加了多少开销

发布于 2021-01-29 16:30:55

我一直在为我的Pylon应用程序使用定时装饰器,以提供特定功能的实时定时信息。我通过创建装饰器并将其简单地附加到我想定时的控制器中的任何功能上来完成了此任务。

但是,已经指出,装饰器可能会给调用增加大量开销,并且它们的运行速度比未修饰的函数慢2-3倍。

首先,我希望执行修饰后的函数比未修饰的函数花费更短的时间,但是与SQL插入调用相比,我希望开销在千分之几秒之内并且可以忽略不计。装饰器本身使用time.time()和一些非常简单的聚合来进行简单的时序计算。

装饰器会增加系统的开销吗?我找不到任何可以支持的内容。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用装饰器增加的开销应该只是一个额外的函数调用。

    装饰者所做的工作不是开销的一部分,因为您的替代方法是将等效代码添加到装饰对象中。

    因此,装饰函数的运行时间可能是原来的两倍,这是因为装饰器正在做一些重要的工作,与未装饰的函数花费的时间大致相同。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看