2022(春)软工作业2:个人编程练习
文章目录
- 一、程序分析
- (1)将文件读到缓冲区
- (2)对读到缓冲区的文件内容进行词频统计
- (3)得出单词频率统计结果,输出出现频率前10的单词
- (4)设置一个main函数,将前面的函数进行调用封装
- (5)测试
- 二、代码风格说明
- 三、程序运行命令、运行结果
- 四、性能分析结果及改进
- (1)按调用次数排序,打印前10函数的信息
- (2)按运行时间和函数名进行排序,打印前10行函数的信息
- (3)每个函数具体占用时间
- (4)具体看一下process_buffer函数调用了什么(代码改进)
- 五、使用可视化分析
一、程序分析
(1)将文件读到缓冲区
(2)对读到缓冲区的文件内容进行词频统计
(3)得出单词频率统计结果,输出出现频率前10的单词
(4)设置一个main函数,将前面的函数进行调用封装
(5)测试
二、代码风格说明
(1)函数名应该小写,单词与单词之间使用"_"相隔
(2)代码块之间相隔两行
(3)注释以 # 和 一个空格 开始
(4)函数注释 一对"""之间
三、程序运行命令、运行结果
对 文件Gone_with_the_wind 进行词频统计
四、性能分析结果及改进
(1)按调用次数排序,打印前10函数的信息
总的运行时间 0.256秒
ncalls:表示函数调用的次数;
tottime:表示指定函数的总的运行时间,除掉函数中调用子函数的运行时间;
percall:(第一个percall)等于 tottime/ncalls;
cumtime:表示该函数及其所有子函数的调用运行的时间,即函数开始调用到返回的时间;
percall:(第二个percall)即函数运行一次的平均时间,等于 cumtime/ncalls;
filename:lineno(function):每个函数调用的具体信息;
(2)按运行时间和函数名进行排序,打印前10行函数的信息
(3)每个函数具体占用时间
process_buffer函数运行的时间最长。
(4)具体看一下process_buffer函数调用了什么(代码改进)
代码改进:
从分析结果的截图中我们可以看出process_buffer函数在replace上花费了巨大的时间。
因此,将下方代码进行改进:for i in punctuation_en: # 将文本中的所有英文标点都换为空格buffer = buffer.replace(i, " ")for i in punctuation_zh: # 将文本中的所有中文标点都换为空格buffer = buffer.replace(i, " ")改为:for i in "!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆、 、〃〈〉《》【】〜〝〞〟–—‘’‛“”„‟…‧﹏﹑﹔·!?。。'":buffer = buffer.replace(i, " ")
可以看出运行时间变快了
五、使用可视化分析
性能分析:
python -m cProfile -o result.out -s cumulative word_freq.py Gone_with_the_wind.txt
;分析结果保存到 result.out 文件;转换为图形;gprof2dot 将 result.out 转换为 dot 格式;再由 graphvix 转换为 png 图形格式。 命令:
python gprof2dot.py -f pstats result.out | dot -Tpng -o result.png
2022(春)软工作业2:个人编程练习相关推荐
- 2022秋软工实践 第一次结对编程作业
2022秋软工实践 第一次结对编程作业 需求分析 (1)Need,需求 (2)Approach,做法 (3)Benfit,好处 (4)Competitors,竞争 (5)Delivery,推广 UML ...
- 2022秋软工实践 第二次结对编程作业
这个作业属于哪个课程 fzusdn 这个作业要求在哪里 作业要求 这个作业的目标 生成指定条件数据集,实现效益最大的点名策略 学号 032004110 队友学号 032004119 commit记录 ...
- 2021秋软工实践第一次结对编程作业
这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践第一次结对编程作业 这个作业的目标 实现博饼软件原型并进行博客写作 学号 031902139 队友学 ...
- 2022秋软工实践个人作业二
2022秋软工实践个人作业二 Task I Task II 这个作业属于哪个课程 软工实践 这个作业要求在哪里 2022秋软工实践个人作业二 这个作业的目标 git html 学号 032002342 ...
- 软工作业 5:词频统计——增强功能
一.基本信息 1.1 编译环境.项目名称.作者 1 #编译环境:python3.6 2 #项目名称:软工作业5-词频统计-增强功能 3 #作者:1613072055 潘博 4 # 1613072056 ...
- 第三次软工作业——实现最大字段和算法并进行判定条件覆盖
第三次软工作业 实现最大子段和的算法并进行条件组合覆盖测试 (一)什么是最大子段和? 我自己的理解: 一个数组可以若干个子数组,包含自身.每一个字数组都有一个数组元素之和,求这些和之间的最大值. 最朴 ...
- 第一次软工作业(构建之法)
第一次软工作业(构建之法) 关于构建之法的若干个问题 1.第一章32页,原文:"有人认为,"中文编程",是解决程序员编程效率的一个秘密武器,请问它是一个"银弹& ...
- 第一次软工作业展示——潘学
第一次软工作业完成啦! 回首这个作业的完成过程,我是很有收获.这个作业有几个难点:1.在给定目录下读取TXT文件的内容:2.从读到的内容中分析出单词:3.统计单词的出现频率并输出. 我之前只学习过C和 ...
- 第一次软工作业(数独)
第一次软工作业(数独) 1.该项目的github地址: https://github.com/514DNA/sudoku 2.各个模块耗费的时间: PSP2.1 Personal Software P ...
- 结对编程实况录像-2022北航软工
项目 内容 这个作业属于哪个课程 2022春季软件工程(罗杰 任健) 这个作业的要求在哪里 结对编程项目-最长英语单词链 我在这个课程的目标是 学习软工的项目合作管理知识,提升软件开发技术 这个作业在 ...
最新文章
- 黑科技,教你用Python打电话,控制手机技术,快来学一下
- Java8的集合:ArrayList的实现原理
- 云主机和物理机PK图
- makefile 的export问题
- 中国计算机学会通讯杂志,何积丰. Cyber-physical systems [J]. 中国计算机学会通讯, 2010, 6(1): 25-29....
- springboot发送邮件_SpringBoot发送邮件如何实现,SpringBoot发送邮件详解(附代码)...
- DBA自述:非科班出身,如何成为Oracle ACE
- 5个月内要完成的东西
- 关于Java的多线程Runnable的个人理解(基础,不讲概念)
- package.json作用
- L1正则化与嵌入式特征选择(稀疏性)
- scrapy生成json中文为ASCII码解决
- 表的主键用数字还是UUID
- ora01017 linux,Oracle linux 7.5安装oracle 12c dg一直提示ORA-01017
- Qt实现职工信息管理系统
- 程序员用C/C++打造车牌识别系统!同学眼中只有膜拜!
- window10配置OpenGL ES3.0
- 会说话的PPT,从开发者角度十分钟理解区块链
- makefile 指定文件搜索路径和文件生成路径
- 进程间通信:通俗理解信号量方式