在尝试解决更复杂的问题时,我开始将访问速度与局部变量与成员变量进行比较.
这是一个测试程序:
#!/usr/bin/env python
MAX=40000000
class StressTestMember(object):
    def __init__(self):
        self.m = 0
    def do_work(self):
        self.m += 1
        self.m *= 2
class StressTestLocal(object):
    def __init__(self):
        pass
    def do_work(self):
        m = 0
        m += 1
        m *= 2
# LOCAL access test
for i in range(MAX):
    StressTestLocal().do_work()
# MEMBER access test
for i in range(MAX):
    StressTestMember().do_work()
我知道实例化StressTestMember和StressTestLocal每次迭代可能看起来不错,但在建模程序中这些基本上是Active Records是有意义的.
经过简单的基准测试,
本地版本的速度提高了大约33%,同时仍然是课程的一部分.为什么?