付宇泽20190919-3 效能分析
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7628
git地址https://fyzs.coding.net/p/Analysis/git
要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。 (2分)
cpu参数:Intel Core i7-9750H CPU @2.60Hz 2.59GHz
消耗时间:0.712s,0.592s,0.654s
要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出)
def count_split(str):text = re.findall(r'[a-z0-9^-]+', str) dict = {} #创建字典for str in text: #遍历文件内单词if str in dict.keys():dict[str] = dict[str] + 1else:dict[str] = 1word_list=sorted(dict.items(), key=lambda x: x[1], reverse=True)return word_list
此处为优化后代码,上版本使用replace进行特殊字符的替换。
redirect_word = sys.stdin.read().lower()count_list = count_split(redirect_word)print('total', len(count_list))for i in range(10):print('{:20s}{:>5d}'.format(count_list[i][0], count_list[i][1]))
此处为上次作业后完善的功能4,应该还有优化空间。
要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。 (5分)
程序最花费时间的三个函数:count_split(),findall(),read()
此三处为几个核心功能都需要调用的代码
要求3 根据瓶颈,"尽力而为"地优化程序性能。 (5分)
def count_split(str):p = re.compile('[-,$()#+&*.![:/"?—]') #指定特殊字符text = re.sub(p, " ", str).split()dict = {} #创建字典for str in text: #遍历文件内单词if str in dict.keys():dict[str] = dict[str] + 1else:dict[str] = 1word_list=sorted(dict.items(), key=lambda x: x[1], reverse=True)return word_list
findall()函数花费较多时间,使用compile函数和sub函数替换完成功能。findall()函数找出所有英文单词,compile()指定字符后用sub()替换为空格。
要求4 再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图。(2分)
count_split()中原本花费时间较多的findall()函数,使用compile()函数和sub()替换完成功能.减少了消耗时间。
要求5 程序运行时间。根据在教师的机器 (Windows8.1) 上运行的速度排名,分为3档。此题得分,第1档20分, 第2档10分,第3档5分。功能测试不能通过的,0分。(20分)
转载于:https://www.cnblogs.com/Fuyuze/p/11579634.html
付宇泽20190919-3 效能分析相关推荐
- 付宇泽20190919-2 功能测试
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7627 要求1 bug计分.阅读教材第298页,发布bug报告. (第1位发 ...
- 付宇泽20190919-5 代码规范,结对要求
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7630 结对要求,适用于本周所有标注"结对"的作业: 每 ...
- 付宇泽四则运算试题生成,结对
本作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631 git链接:https://e.coding.net/kangzh ...
- 付宇泽20190912-3 词频统计
本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583 本作业代码https://e.coding.net/fyzs/rua ...
- 付宇泽20190919-4 单元测试,结对
本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629 结对伙伴:康哲 要求1 对每个功能,先给出测试用例,然后再编码功能. ...
- 付宇泽20190912-2 命令行
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6582 1.熟悉 命令行和控制台 请用C语言开发应用程序d.exe,从控制台 ...
- 付宇泽20190912-1 每周例行报告
本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6581 一.本周PSP 二.本周进度条 三.累计进度图 累计代码量 累计 ...
- 付宇泽20190919-1 每周例行报告
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7626 一.本周PSP 二.本周进度条 三.累计进度图 累计代码: 累计博文 ...
- 付宇泽20190905-1 每周例行报告
本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5521 1.本周PSP 2.进度条 3.累进折线图 (1)代码量 (2)博文 ...
最新文章
- pytorch ShuffleNetV2 知识整理
- 跨界创立PayPal、特斯拉、SpaceX……,埃隆·马斯克是这样“掌控”知识的
- php post登录跳转,php实现post跳转
- deepin20安装mysql-workbench
- 自定义的Spinner文字居中
- MySQL优化--索引
- 光学计算机的工作原理,使用光学计算机的人工智能超分辨率
- vue引入iconfont阿里巴巴矢量图标库官网,自定义图标
- 阿里云大学:云端搭建Linux学习环境
- 齐次线性方程组和非齐次线性方程组
- linux删除ip地址的命令
- 【groovy #1】groovy的相关知识
- android聊天室背景图片,32张漂亮的自然风光微信7.0聊天背景图片推荐 唯美自然风景手机壁纸 (全文)...
- mmap(内存映射)、sendfile() 与零拷贝技术
- Ubuntu16.04安装联想LJ2600D打印机驱动程序
- 剑网3哪5区人哪个服务器最多,剑网3哪个区服人最多?只有选对了游戏区才能体会到多人的乐趣...
- ORMLite的集成和使用
- 无法坚持时看看“二十英里法则”
- platformio如何向Arduino开发板发送文本
- 双曲抛物面z=xy俗称马鞍面-高数学习笔记(1)
热门文章
- 【算法】Sky Map
- 江苏计算机报名时间2021年上半年,关于2021年春季江苏省计算机等级考试报名的通知...
- spinner添加分割线和改变右侧箭头
- chatGPT 生成随机漫步代码
- 电脑播放已下载本地的m3u8缓存视频文件
- eNSP启动一直出#号的一种参考方法
- 内存管理---内存释放
- https://blog.csdn.net/qq_35992900/article/details/80673889
- 刘晓燕《不就是语法和长难句吗》第一章个人笔记
- C++(Qt) 和 Word、Excel、PDF 交互总结