zoukankan      html  css  js  c++  java
  • 软工作业 3:个人编程练习——词频统计

    一、程序分析

    (1)读文件到缓冲区

    (2)处理缓冲区 ,统计每个单词的频率

    (3)输出 Top 10 的单词

    (4)设置一个main函数,将前面的函数进行调用封装

    (5)具体性能分析

    二、代码规范说明

    (1)python3与python2在一些函数方面调用有区别:例如 python3在print函数的调用上是print(s),而python2在print函数的调用上是print“s”。

    (2)python语言对空行有严格的限制,不像C语言有很多的大括号。

    三、程序运行结果

    (1)对文件Gone_with_the_wind的词频统计的结果:

    (2)对文件A_Tale_of_Two_Cities的词频统计的结果:

    四、性能分析结果及改进

    (1)性能分析结果

      1.1.寻找执行时间、次数最多的部分代码分析如下:

      【参考博客:https://blog.csdn.net/asukasmallriver/article/details/74356771】

               总的运行时间是0.95s。截图如下:

        

        ncalls:表示函数调用的次数;
        tottime:表示指定函数的总的运行时间,除掉函数中调用子函数的运行时间;
        percall:(第一个percall)等于 tottime/ncalls;
        cumtime:表示该函数及其所有子函数的调用运行的时间,即函数开始调用到返回的时间;
        percall:(第二个percall)即函数运行一次的平均时间,等于 cumtime/ncalls;
        filename:lineno(function):每个函数调用的具体信息;

      1.2.每个函数具体占用时间截图如下:

          我们看出在这几个函数当中,我们发现process_buffer函数运行的时间最长。

        

      1.3.我们具体看一下process_buffer函数调用了什么

        截图如下:

        

      从分析结果的截图中我们可以看出process_buffer函数在lower上花费了巨大的时间。因此,我们下面将对此函数代码进行改进

        

    (2)代码改进

      

      接下来我们看一下总的运行时间是否进行了改变?

        截图如下:

        

      由此我们可以看出比之前运行减少了0.631s。

    五、使用可视化分析

    (1)graphviz安装和gprof2dot.py下载

      【参考:http://www.graphviz.org/  和  https://pypi.org/project/gprof2dot/#files】

    (2)可视化操作

      执行下述步骤:

      1.性能分析:``` python -m cProfile -o result.out -s cumulative word_freq.py Gone_with_the_wind.txt``` ;分析结果保存到 result.out 文件;
      2.转换为图形;gprof2dot 将 result.out 转换为 dot 格式;再由 graphvix 转换为 png 图形格式。 命令:```python gprof2dot.py -f pstats result.out | dot -Tpng -o result.png```

      转换得到图如下:

      

      

  • 相关阅读:
    为jquery添加扩展标准思路
    linux 相关命令
    通过设置PHPSESSID保存到cookie实现免登录
    CentOs7 配置nfs 系统
    ajax 异步 跨域上传图片
    php下载并安装pear脚本
    php基于swoole扩展的WebSocket
    php冒泡排序
    微信公众号验证TOKEN
    CSS清浮动处理(Clear与BFC)
  • 原文地址:https://www.cnblogs.com/CYChenYuan/p/9756896.html
Copyright © 2011-2022 走看看