Project: Individual Project - Word frequency program----11061192zmx
Description & Requirements
http://www.cnblogs.com/jiel/p/3311400.html
项目时间估计
理解项目要求: 1小时
构建项目逻辑: 1小时
查阅相关资料: 1小时
编写&调试程序: 2小时
样例测试&功能完善: 1小时
项目效率分析: 1小时
项目优化: 2小时
总结&提交: 1小时
项目实际完成时间
实际完成时间很是蛋疼,题目意思不难理解,实现起来也不难,本着先实现功能不考虑时间的原则写了用c++里的map实现了一下,但发现debug模式下那个速度简直不能看,但这时已经离截止日期很近了,又有些错误,这两天花在改代码测数据上的时间很多。。。主要是数据如果不大没有代表性,如果大了的话又不好调试,很是蛋疼。。。
写代码:n小时
调试: n小时
测试数据按照我对题目的理解应该是能输出正确结果的,在release模式下100+M的小说大约用了30s左右,相对于薛大神的12s还是8s简直就是奇慢无比,详细的性能分析写在后面。
开发过程
开发过程其实不能算充满艰辛,但做无用功的时间太多了。一开始先花了好多时间翻了翻C++Primer看了看容器什么,然后没看清楚题意没有递归遍历文件,最后功能实现后再把递归遍历部分加进去导致代码很乱,接着就是一些不知道从哪里冒出来的问题(运行时间过慢等,估计是我不小心点到了debug模式然后没有发现),因为这已经花了很多时间了,实在是不耐烦了,就直接重写了一遍代码,算是一个阶段完成了。但后来和小伙伴们对数据的时候竟然发现对题意理解错了,最后改了一下觉得应该没问题了。。。总之整个过程充满了艰辛,实在是无力了。。
关于算法实现,我是用一个word_list来存储单词,用word_com来存储单词统一的形式(如file和File我在word_com里都存成FILE)。最后根据word_com里的频率将word_list里的单词排个序,将每个单词的最小字典序的形式提出来,这时单词的顺序不是按照题目要求的字典序的,而是按照真正字典里的顺序,这里再对其进行一次字典序的排序,输出结果。
性能分析
由于是直接用map做的,觉得map的insert操作应该比下标创建要快一点,于是在加单词的时候还加了hash。。其实应该是没什么区别的(只是优化了复杂度的常数,最后性能分析结果也显示没优化多少。。。)
可以看到,100+M的数据跑了30s,而且中间cpu使用率的曲线也很诡异。。
占有样本数比较多的函数是pass,这是用来遍历文件夹的,里面调用了addword是向map里面加单词记录频率的。
总结
真的是学到了很多,主要是调试方面提高了许多心理承受能力。
由于看了几遍c++primer里容器的介绍,对c++里各种容器也算有了个详细的了解,方便以后使用。
学会了如何遍历文件夹,以及对一些函数的运行速度有了更深的了解。
总的来说是一次很不错的实践。完
转载于:https://www.cnblogs.com/z-mac/p/3317104.html
Project: Individual Project - Word frequency program----11061192zmx相关推荐
- Individual Project - Word frequency program-11061171-MaoYu
BUAA Advanced Software Engineering Project: Individual Project - Word frequency program Ryan Mao (毛 ...
- 在C#中以编程方式将 MS Project MPP 转换为 Word 文档
Microsoft Project ( MPP ) 文件用于不同的项目管理任务,例如组织和跟踪项目以及管理资源.如果希望文档形式的项目数据进一步修改和共享,可以通过将 MPP 文件转换为 Word D ...
- eclipse 创建项目报项目存在的解决方案(Invalid project name: Project xxx already exists)...
2019独角兽企业重金招聘Python工程师标准>>> eclipse Invalid project name: Project "xxx" already e ...
- Android project依赖project配置说明
Android studio 项目(Project)依赖(非Module) 0. 前言 对于Module 级别的依赖大家都知道,今天说下Android Studio下的项目依赖. 场景: A Proj ...
- Python:实现word frequency functions词频函数算法(附完整源码)
Python:实现word frequency functions词频函数算法 import string from math import log10 def term_frequency(term ...
- 《软件工程》individual project开发小记(一)
今天周四没有想去上的课,早八点到中午11点半,下午吃完饭后稍微完善了一下,目前代码可以在dev c++和vs2012上正常运行,性能分析我看资料上一大坨,考虑到目前状态不太好,脑袋转不动了,决定先放一 ...
- 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning
实验要求: Image Printing Program Based on Halftoning Objective: To know in principle what is "halft ...
- Individual Project
这次我自己完成了一个小小的项目,课可以把这篇随笔当做一次实验报告,主要的内容是用JUnit进行单元测试.由于我的技术太弱了,就在博客园里"求师",按照大神的方法慢慢把这些东西写了下 ...
- Scrutiny of Partner's individual project Code
因为队友的代码并没有完整的实现个人项目的完整功能. 已实现功能: 1.对单个单词进行词频统计 2.能够按照老师的要求的格式对制定的有效字符串进行匹配,并且输出至指定文件. 未实现: 1.对连续多个单词 ...
最新文章
- 如何在Git中克隆单个分支?
- clone-graph
- 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)
- Leetcode--397. 整数替换
- mysql导出kml_谷歌地图如何导出kml文件 导出kml文件教程
- 国内搜索大哥iOS面试题
- java9新特性有json吗,磨剑三年,跳票一年,Java9新功能有哪些神通?
- 所有浏览器的 CSS selectors 兼容性
- 利用wePE制作WinPE启动U盘全过程(含图文)
- 阴阳师服务器维护3月25日,《阴阳师》手游3月25日维护更新公告
- PhotoShop CC 2017软件工具面板使用---快速选择工具
- 分布式事务解决方案汇总:2PC、消息中间件、TCC、状态机+重试+幂等(转)
- 实验吧决斗场刷新刷新快刷新
- redhat 7 手册
- ubuntu 手机连接不到电脑,配置
- easypoi导入excel
- 美图春招产品实习面经
- 泰文,越南等字符串存数据库变成问号,解决办法。
- mysql性能优化和高可用架构实践pdf_实践大于一切!Alibaba最新MySQL性能优化+高可用架构全彩版PDF...
- 《一道论证题》by孙宇晨