词频统计的效能测试。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词频统计的效能测试。相关的知识,希望对你有一定的参考价值。

因为我的词频统计程序是拿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实现方法的第一次改进

效能分析——词频统计器(第二版)

词频统计及其效能分析

词频统计 效能分析