【问题标题】:Is there a performance difference between imported functions and classes?导入的函数和类之间是否存在性能差异?
【发布时间】:2021-05-06 10:03:27
【问题描述】:

这两个例子的性能有区别吗:

示例 1:

class Calculator:
    def add(self, a, b):
        return a+b
import Calculator

calc = Calculator()
print(calc.add(1, 2))

示例 2:

def add(a, b)
    return a+b
from Calculator import add

print(add(1, 2))

使用类而不是导入函数我会遇到性能问题吗? 考虑多线程和多处理。

【问题讨论】:

  • 决定使用函数或类不应该考虑性能(几乎所有时间)
  • 我认为不会有;不会......你可以查看这个关于 Java 的问题(我知道你使用的是 python,但为什么不使用)-stackoverflow.com/questions/7128348/…
  • 是的,有,但这不应该是驱动问题:将add 设为某个类中的方法是没有意义的——没有使用特定于实例的状态。另一方面,当您需要特定于实例的状态时,则不适合使用函数。哪个较慢几乎无关紧要。使用你需要的任何抽象,不要使用你不需要的任何抽象。
  • 你也可以为函数写测试,所以我看不出这有什么关系。
  • 无用和假设性代码的性能没有必要猜测。如果您关心性能,请确保衡量性能成为您开发习惯的一部分,就像测试是测试驱动开发的一部分一样。

标签: python multithreading performance python-multiprocessing


【解决方案1】:

我已经做了一些测试,它似乎有大约 6% 的微小差异,但如果速度是一个问题,请尝试使用 numpy 或类似的东西,或者根本不使用 python(或任何其他脚本语言)。

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2012-12-01
    • 2014-05-17
    • 2018-07-11
    • 2012-08-21
    • 2014-02-23
    相关资源
    最近更新 更多