Python算法评估

时间评估

timeit模块是为执行相对可靠的计时操作设计的。(Linux同样有timeit命令)

例如:

>>> import timeit
>>> timeit.timeit("x = sum(range(1000))")
13.79994061900004

如果想要使用命令行对某函数进行计时,可以使用-m选项调用timeit模块。

$ python -m timeit -s "import mymodule as m" "m.myfunction()"

使用timeit模块需要避免因重复执行带来的副作用。例如对排序函数.sort()进行计时,可能只是首次运行执行了排序操作,而在其他次运行时,函数可能对已排序的结果不会执行排序操作,从而影响到对计算时间的评估。

性能评估与优化

实际过程中,我们经常猜测自己代码需要优化的是哪一部分,不如让profiler替我们找出来。cProfiler模块使用起来和timeit一样简单。如果我们的主函数是main(),我们可以像下面一样测试,打印程序中各个函数的计时结果。

import cProfiler
cProfiler.run("main()")

另外我们可以利用matplotlib将性能评估图形化,常用两类图形:

  • 反映问题规模与运行时间关系的图表
  • 运行时间的详细分布情况的盒形图(箱线图)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 《专注:把事情做到极致的艺术》作者亚当·格雷萨认为:大脑的注意力是有限的。只有一次专注一件事,才能在充满干扰的世界...
    竹说阅读 5,455评论 0 0
  • 今天是连续日更3000字的第13天了,自从每天开始挑战自己之后,生活越来越顺畅了。写日记也越来越不费力了。我渐渐开...
    清晨阳光28阅读 1,526评论 0 0
  • 我有一同事,漂亮白皙脾气好,属于那种气质脱俗的美女。是公司未婚男生圈里议论度最高的女生,来公司不到一年频频有追求者...
    程小韵阅读 1,760评论 2 1

友情链接更多精彩内容