【python】【性能比较】关于类成员方法的对象式调用、函数式调用与反射式调用的性能比较

结论

对象式调用比函数式调用要快0.2%左右,
对象式调用比反射式调用要快82%左右,
函数式调用比反射式调用快79%左右。
(采用的算法为(a-b)/b,其中a>bb为"比较对象",a为"被比较对象")

环境

  • python 3.11.5
  • win10x64-22H2
  • IDE: pycharm-comunity
  • cpu: i5-10200H

用例代码(分块)

用例对象

class clss:
	def fun():
		...

定义测试运行次数

times = 10000000

用例初始化

classes = [clss() for i in range(times)]

对象式调用

for c in classes:
	c.fun()

函数式调用

f = c.fun
for c in classes:
	f(c)

反射式调用

fn = c.fun.__name__
for c in classes:
	c.__getattribute__(fn)()

用例代码(完整)

class clss:
	def fun():
		...
times = 10000000
classes = [clss() for i in range(times)]
t = time.time()
for c in classes:
	c.fun()
print("对象式",time.time-t)
t = time.time()
f = c.fun
for c in classes:
	f(c)
print("函数式",time.time-t)
t = time.time()
fn = c.fun.__name__
for c in classes:
	c.__getattribute__(fn)()
print("反射式",time.time-t)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值