zoukankan      html  css  js  c++  java
  • 词频统计的效能测试。

    因为我的词频统计程序是拿Python语言编写的,所以在网上查找了适用于Python语音的效能测试工具。

    1.介绍性能分析器

          profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats。这些分析器提供的是对Python程序的确定性分析。同时也提供一系列的报表生成工具,允许用户快速地检查分析结果。

          Python标准库提供了3个不同的性能分析器:

    1. cProfile:推荐给大部分的用户,是C的一个扩展应用,因为其合理的运行开销,所以适合分析运行时间较长的。是基于lsprof。
    2. profile:一个纯python模块,它的接口和cProfile一致。在分析程序时,增加了很大的运行开销。如果你想扩展profiler的功能,可以试着继承这个模块。
    3. hotshot: 一个试验性的c模块,关注减少分析时的运行开销,但是是以需要更长的数据后处理的次数为代价。不过这个模块不再被维护,也有可能在新的python版本中被弃用。

    具体所需模块的安装我方法我是参考这篇文章的《检测Python程序执行效率及内存和CPU使用的7种方法》

    附网址:http://python.jobbole.com/80754/

    2.性能测试

    (1) 我对程序代码进行了修改,使得程序运行结束以后会显示出程序运行后所花费的时间。

    (2)使用cProfile模块

    知道每个函数和方法消耗了多少时间,以及这些函数被调用了多少次,可以使用cProfile模块。

    现在可以看到代码中函数的详细描述,其中含有每个函数调用的次数,由于使用了-s选项(累加),最终结果会根据每个函数的累计执行时间排序。

    会发现执行脚本所需的总时间比以前要多。这是由于测量每个函数的执行时间这个操作本身也是需要时间。

    参数解释参考下图:

    文章中提到运用memory_profiler模块用来基于逐行测量代码的内存使用,使用line_profiler模块可以给出执行每行代码所需占用的CPU时间。使用guppy包

    可以知道在代码执行的每个阶段中,每种类型(str、tuple、dict等)分别创建了多少对象。

    而我的电脑不知道出现什么原因,经过多次调试还是无法安装上以上模块,我正在查找解决问题的方法。

    如安装line_profiler模块:

    安装报错:

  • 相关阅读:
    Java基础之StringBuffer和StringBuilder的区别
    ElasticSearch初体验之使用
    oracle基础之游标的理解与使用
    Java基础之创建实例化对象的方式
    vue.$nextTick实现原理
    vue3双向数据绑定原理_demo
    css实现水平-垂直居中的方法
    中文数组转为数字
    props&attrs provide inject
    vue2和vue3比较
  • 原文地址:https://www.cnblogs.com/yangyuning/p/6066153.html
Copyright © 2011-2022 走看看