timeit

直接举例

  • 必要的导入
import timeit

1. 测量生成列表的时间

  • 像是 C 或者 Js 中把函数作为参数传入
>>> func = '''
... arr = []
... for i in range(1000):
... arr.append(i)
... '''
>>> t1 = timeit.timeit(stmt=func, number=10000)
>>> t2 = timeit.timeit(stmt="[i for i in range(1000)]", number=10000)
>>> t1
1.0912232999999105
>>> t2
0.5270981999999549
  • 可以看出,列表生成式比 "append" 快

2. 测量函数运行时间(一)

  • 公共部分
>>> def func(num=3):
... for i in range(num):
... print(f"Repeat for {i}.")
...
>>>
  • 版本一
>>> t = timeit.timeit(stmt=func, number=5)
Repeat for 0.
Repeat for 1.
Repeat for 2.
Repeat for 0.
Repeat for 1.
Repeat for 2.
Repeat for 0.
Repeat for 1.
Repeat for 2.
Repeat for 0.
Repeat for 1.
Repeat for 2.
Repeat for 0.
Repeat for 1.
Repeat for 2.
>>> t
0.0009049000000231899
  • 版本二
>>> t = timeit.timeit(stmt=func, setup="func"+"num=5", number=5)
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
>>> t
0.008177499999874271
  • t = timeit.timeit(func, setup="funcnum=5", number=5) 也行,但不直观

3. 测量函数运行时间(二)

>>> s = '''
... def func(num):
... for i in range(num):
... print(f"Repeat for {i}")
... '''
>>> t = timeit.timeit(stmt="func(num)", setup=s+"num=3", number=5)
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
Repeat for 0
Repeat for 1
Repeat for 2
>>> t
0.0020025999997415056

最新文章

  1. bnuoj 24251 Counting Pair
  2. SQL简介
  3. java练习题(字符串类):显示4位验证码、输出年月日、从XML中抓取信息
  4. Linux Cache Mechanism Summary(undone)
  5. InnoDB: Error: could not open single-table tablespace file
  6. C#实现汉字转换为拼音缩写的代码
  7. c# 二维码 显示
  8. 用Wget进行下载
  9. js 输出HTML 样式
  10. C#与Java区别(一)
  11. 迭代var()内置函数的时候出现RuntimeError: dictionary changed size during iteration的解决办法
  12. Nginx的try_files指令和命名location使用实例
  13. ArrayList源码学习
  14. 【转载】window.open被浏览器拦截的解决办法
  15. ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录
  16. Tor源码阅读与改造(一)
  17. python学习笔记四——循环及冒泡排序
  18. Spring+SpringMVC+Mybatis整合(二)
  19. mac使用influxdb和grafana
  20. shell脚本${}、##和%%使用范例

热门文章

  1. 【leetcode】Trips and Users
  2. Python前端HTML
  3. [POI2011]DYN-Dynamite
  4. php curl方法 支持 http https get post cookie
  5. ServletConfig接口
  6. 设置centos7界面语言为中文
  7. springmvc文件上传 参数为MultipartFile 转换为File
  8. echarts之bootstrap选项卡不能显示其他标签echarts图表
  9. API网络数据安全
  10. scrollWidth、clientWidth、offsetWidth、width的区别