文档章节

Python 自带计时工具 timeit

catroll
 catroll
发布于 2013/04/19 11:23
字数 379
阅读 1854
收藏 8
码厩技术博客

Python 自带计时工具 timeit

 

Timer 类:

__init__(stmt="pass", setup="pass", timer=default_timer)

    stmt 是执行语句,setup 是导入执行语句环境

print_exc(file=None)

timeit(number=default_number)

    返回测试所用秒数,number 是每个测试中调用被计时语句的次数

repeat(repeat=default_repeat, number=default_number)

    返回测试所用秒数列表,repeat 是重复整个测试的次数,number 是每个测试中执行语句的次数

快捷方法:

timeit(stmt="pass", setup="pass", timer=default_timer, number=default_number)

    = Timer(stmt, setup, timer).timeit(number)

repeat(stmt="pass", setup="pass", timer=default_timer, repeat=default_repeat, number=default_number)

    = Timer(stmt, setup, timer).repeat(repeat, number)

 

default_timer 在 win32 下是 time.clock(),在 linux 下是 time.time()

default_number = 1000000

default_repeat = 3

 

实例:

import timeit

def func1(x):
    pow(x, 2)

def func2(x):
    return x * x

v = 10000

func1_test = 'func1(' + str(v) + ')'
func2_test = 'func2(' + str(v) + ')'

print timeit.timeit(func1_test, 'from __main__ import func1')
print timeit.timeit(func2_test, 'from __main__ import func2')

print timeit.repeat(func1_test, 'from __main__ import func1')
print timeit.repeat(func2_test, 'from __main__ import func2')

 

 

实例2:

#! /usr/bin/env python
# -*- coding: u8 -*-
import random
import timeit

def randDiff( k,n ):
    '产生k个不相等的从1到n的随机数'
    p = []
    y1 = [random.randrange(1,n+1) for i in range(n)]
    y2 = []
    y2.extend(y1)
    y1.sort()
    for j in range(k):
        temp1 = y1[j]
        temp2 = y2.index(temp1)
        p.append(temp2 + 1)
        y2[temp2] = -1
    return p

def randDif(k,n):
    '新函数,生成k个1到n之间不相等的随机数'
    if k>n:
        return []
    a = range(1,n+1)
    random.shuffle(a)
    return a[:k]

# 关于上面两个函数:http://www.oschina.net/question/153568_23095?sort=time

if __name__=='__main__':
    print timeit.repeat("randDiff(3, 10)", "from __main__ import randDiff", timeit.default_timer, 3, 10000)
    print timeit.repeat("randDif(3, 10)", "from __main__ import randDif", timeit.default_timer, 3, 10000)

 

© 著作权归作者所有

共有 人打赏支持
catroll
粉丝 4
博文 8
码字总数 4451
作品 0
武汉
后端工程师
私信 提问
Python装饰器与面向切面编程

今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以...

张旭0512
2014/03/06
0
0
Python丨Python 性能分析大全

虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求。但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚至...

太阳代理
2017/11/07
0
0
设计模式之:理解 Python 中的装饰器

1、问题 文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出......

大数据之路
2013/07/22
0
0
Python装饰器实例(2):面向切面编程

装饰器入门 1.1. 需求是怎么来的? 装饰器的定义很是抽象,我们来看一个小例子。 这是一个很无聊的函数没错。但是突然有一个更无聊的人,我们称呼他为B君,说我想看看执行这个函数用了多长时...

cbliu
2014/02/10
0
0
python 计算函数运行时间

使用timeit模块 测试一段代码的运行时间,在python里面有个很简单的方法,就是使用timeit模块,使用起来超级方便 下面简单介绍一个timeit模块中的函数 主要就是这两个函数: 1, timeit(stmt...

阿豪boy
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
3
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
8
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
3
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
5
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部