此作业要求参见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 效能分析相关推荐

  1. 付宇泽20190919-2 功能测试

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7627 要求1 bug计分.阅读教材第298页,发布bug报告. (第1位发 ...

  2. 付宇泽20190919-5 代码规范,结对要求

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7630 结对要求,适用于本周所有标注"结对"的作业: 每 ...

  3. 付宇泽四则运算试题生成,结对

    本作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631 git链接:https://e.coding.net/kangzh ...

  4. 付宇泽20190912-3 词频统计

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583 本作业代码https://e.coding.net/fyzs/rua ...

  5. 付宇泽20190919-4 单元测试,结对

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629 结对伙伴:康哲 要求1 对每个功能,先给出测试用例,然后再编码功能. ...

  6. 付宇泽20190912-2 命令行

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6582 1.熟悉 命令行和控制台 请用C语言开发应用程序d.exe,从控制台 ...

  7. 付宇泽20190912-1 每周例行报告

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6581 一.本周PSP 二.本周进度条 三.累计进度图   累计代码量 累计 ...

  8. 付宇泽20190919-1 每周例行报告

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7626 一.本周PSP 二.本周进度条 三.累计进度图 累计代码: 累计博文 ...

  9. 付宇泽20190905-1 每周例行报告

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5521 1.本周PSP 2.进度条 3.累进折线图 (1)代码量 (2)博文 ...

最新文章

  1. pytorch ShuffleNetV2 知识整理
  2. 跨界创立PayPal、特斯拉、SpaceX……,埃隆·马斯克是这样“掌控”知识的
  3. php post登录跳转,php实现post跳转
  4. deepin20安装mysql-workbench
  5. 自定义的Spinner文字居中
  6. MySQL优化--索引
  7. 光学计算机的工作原理,使用光学计算机的人工智能超分辨率
  8. vue引入iconfont阿里巴巴矢量图标库官网,自定义图标
  9. 阿里云大学:云端搭建Linux学习环境
  10. 齐次线性方程组和非齐次线性方程组
  11. linux删除ip地址的命令
  12. 【groovy #1】groovy的相关知识
  13. android聊天室背景图片,32张漂亮的自然风光微信7.0聊天背景图片推荐 唯美自然风景手机壁纸 (全文)...
  14. mmap(内存映射)、sendfile() 与零拷贝技术
  15. Ubuntu16.04安装联想LJ2600D打印机驱动程序
  16. 剑网3哪5区人哪个服务器最多,剑网3哪个区服人最多?只有选对了游戏区才能体会到多人的乐趣...
  17. ORMLite的集成和使用
  18. 无法坚持时看看“二十英里法则”
  19. platformio如何向Arduino开发板发送文本
  20. 双曲抛物面z=xy俗称马鞍面-高数学习笔记(1)

热门文章

  1. 【算法】Sky Map
  2. 江苏计算机报名时间2021年上半年,关于2021年春季江苏省计算机等级考试报名的通知...
  3. spinner添加分割线和改变右侧箭头
  4. chatGPT 生成随机漫步代码
  5. 电脑播放已下载本地的m3u8缓存视频文件
  6. eNSP启动一直出#号的一种参考方法
  7. 内存管理---内存释放
  8. https://blog.csdn.net/qq_35992900/article/details/80673889
  9. 刘晓燕《不就是语法和长难句吗》第一章个人笔记
  10. C++(Qt) 和 Word、Excel、PDF 交互总结