performance - 使用 TimeIt 管理设置代码

标签 performance python timeit

作为我的一个宠物项目的一部分,我需要测试 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/

相关文章:

java - JSF——替代 "rendered="?

ruby-on-rails - Rails:包含多态关联

java - Java 世界中的一毫秒有多长?

python - Monkey 修补模块中的函数以进行单元测试

python - 魔法函数timeit

c - 为什么要把代码放在标题中

python - setup.py, pip - 获取python包的原始执行路径

python - 使用 python 进行 Selenium 网络抓取 - 任何没有名字的下拉菜单

python - 在 timeit() 中从同一模块调用方法时导入错误