一、self.*与getattr的速度对比(Python中的AI对比实验)

完整代码如下:

# -*- coding: UTF-8 -*-

# Author: Perry
# @Create Time: 2020-04-06 12:56

import timeit
import numpy as np


class A(object):
    def __init__(self):
        self.one = 1

    def use(self):
        tmp = self.one


class B(object):
    def __init__(self):
        self.one = 1

    def use(self):
        tmp = getattr(self, "one")


if __name__ == '__main__':
    A_exp = A()
    B_exp = B()

    repeat = 10
    number = 100000

    A_time = timeit.repeat("A_exp.use()", "from __main__ import A_exp", repeat=repeat, number=number)
    A_time = np.mean(A_time)
    print("A time is: ", A_time)

    B_time = timeit.repeat("B_exp.use()", "from __main__ import B_exp", repeat=repeat, number=number)
    B_time = np.mean(B_time)
    print("B time is: ", B_time)

输出结果:

A time is:  0.011411738799999998
B time is:  0.015067042500000022

结论:可以看到使用self > getattr,但是没有超过太多。

Tags: