当前位置: 首页 > 面试题库 >

如何使用Python的timeit计时代码段以测试性能?

冯流觞
2023-03-14
问题内容

我有一个Python脚本,该脚本可以正常工作,但是我需要编写执行时间。我已经用谷歌搜索了,timeit但是我似乎无法使它正常工作。

我的Python脚本如下所示:

import sys
import getopt
import timeit
import random
import os
import re
import ibm_db
import time
from string import maketrans
myfile = open("results_update.txt", "a")

for r in range(100):
    rannumber = random.randint(0, 100)

    update = "update TABLE set val = %i where MyCount >= '2010' and MyCount < '2012' and number = '250'" % rannumber
    #print rannumber

    conn = ibm_db.pconnect("dsn=myDB","usrname","secretPWD")

for r in range(5):
    print "Run %s\n" % r        
    ibm_db.execute(query_stmt)
 query_stmt = ibm_db.prepare(conn, update)

myfile.close()
ibm_db.close(conn)

我需要的是执行查询并将其写入文件所需的时间results_update.txt。目的是使用不同的索引和调整机制来测试数据库的更新语句。


问题答案:

您可以在要计时的块之前或之后使用time.time()time.clock()

import time

t0 = time.time()
code_block
t1 = time.time()

total = t1-t0

此方法不完全精确timeit(它不会平均运行几次),但是很简单。

time.time()(在Windows和Linux中)和time.clock()(在Linux中)不够精确,无法实现快速功能(total =
0)。在这种情况下,或者如果要平均几次运行所花费的时间,则必须多次手动调用该函数(就像我在示例代码中已经做过的那样,并且在设置其 number
参数时timeit会自动执行)

import time

def myfast():
   code

n = 10000
t0 = time.time()
for i in range(n): myfast()
t1 = time.time()

total_n = t1-t0

如注释中所述,在Windows中,Coreytime.clock()具有更高的精度(微秒而不是秒),并且优于time.time()



 类似资料:
  • 问题内容: CPU周期,内存使用率,执行时间等? 补充:除了感知代码运行的速度之外,还有定量的测试JavaScript性能的方法吗? 问题答案: 探查器绝对是获取数字的好方法,但是根据我的经验,感知的性能对用户/客户端至关重要。例如,我们有一个带有Ext手风琴的项目,该项目已扩展为显示一些数据,然后显示一些嵌套的Ext网格。实际上,所有内容的渲染速度都非常快,一次操作都不需要很长时间,一次渲染的信

  • 本文向大家介绍Python代码执行时间测量模块timeit用法解析,包括了Python代码执行时间测量模块timeit用法解析的使用技巧和注意事项,需要的朋友参考一下 1.timeit模块 timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=<timer function>) Ti

  • 问题内容: 我了解做什么的概念,但是不确定如何在代码中实现。 我怎样才能比较两个功能,比方说和,用? 问题答案: timeit的工作方式是运行一次安装代码,然后重复调用一系列语句。因此,如果要测试排序,则需要格外小心,以免就地进行一次排序不会影响已排序数据的下一遍(当然,这会使Timsort真正发光,因为它执行效果最佳当数据已经部分排序时)。 这是有关如何设置排序测试的示例: 请注意,这一系列语句

  • Basic Example # timeit_example.py import timeit # using setitem t = timeit.Timer("print('main statement')", "print('setup')") print('TIMEIT:') print(t.timeit(2)) print('REPEAT:') print(t.repeat(3,

  • 问题内容: 在代码底部运行的示例需要很长时间才能在我的机器上解决: 这是代码: 每只只供三只骆驼。我想至少这样做4次。该测试用例仍在运行(现在:()已经大约5分钟了。如果完成,我将对其进行更新。 我应该怎么做才能改善这段代码?(通常以性能为依据,但也欢迎其他建议)。 问题答案: 我以前也被这个绊倒了。这里的瓶颈实际上是。 该in语句是如此易于使用,你忘记了它是线性搜索,而当你在列表上进行线性搜索时

  • 问题内容: 我在python的unittest2框架中运行了一些基于类的单元测试。我们正在使用Selenium WebDriver,它具有便捷的方法。我想在每次测试失败时在tearDown()中抓取一个屏幕截图,以减少调试_为什么_ 测试失败的时间。 但是,我找不到仅在测试失败时运行代码的任何方法。不管测试是否成功,都会调用,并且我不想用成百上千的浏览器屏幕快照来使我们的文件系统混乱,以确保测试成