作为我的一个宠物项目的一部分,我需要测试 Python 代码的各种不同实现的性能。我预计这将是我经常做的事情,并且我想尝试使我为实现此目标而编写的代码尽可能易于更新和修改。
目前仍处于起步阶段,但我已经开始使用字符串来管理常见设置或测试代码,例如:
naiveSetup = 'from PerformanceTests.Vectors import NaiveVector\n' \
+ 'left = NaiveVector([1,0,0])\n' \
+ 'right = NaiveVector([0,1,0])'
这允许我只编写一次代码,但代价是使其更难以阅读且更新变得笨拙。
有更好的方法吗?
最佳答案
使用三引号“””
setup_code = """
from PerformanceTests.Vectors import NaiveVector
left = NaiveVector([1,0,0])
right = NaiveVector([0,1,0])
"""
timeit 的文档中提供了另一个有趣的方法:
def test():
"Stupid test function"
L = []
for i in range(100):
L.append(i)
if __name__=='__main__':
from timeit import Timer
t = Timer("test()", "from __main__ import test")
print t.timeit()
尽管这并不适合所有需求。
关于performance - 使用 TimeIt 管理设置代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988127/