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相关推荐

  1. Individual Project - Word frequency program-11061171-MaoYu

    BUAA Advanced Software Engineering Project:  Individual Project - Word frequency program Ryan Mao (毛 ...

  2. 在C#中以编程方式将 MS Project MPP 转换为 Word 文档

    Microsoft Project ( MPP ) 文件用于不同的项目管理任务,例如组织和跟踪项目以及管理资源.如果希望文档形式的项目数据进一步修改和共享,可以通过将 MPP 文件转换为 Word D ...

  3. eclipse 创建项目报项目存在的解决方案(Invalid project name: Project xxx already exists)...

    2019独角兽企业重金招聘Python工程师标准>>> eclipse Invalid project name: Project "xxx" already e ...

  4. Android project依赖project配置说明

    Android studio 项目(Project)依赖(非Module) 0. 前言 对于Module 级别的依赖大家都知道,今天说下Android Studio下的项目依赖. 场景: A Proj ...

  5. Python:实现word frequency functions词频函数算法(附完整源码)

    Python:实现word frequency functions词频函数算法 import string from math import log10 def term_frequency(term ...

  6. 《软件工程》individual project开发小记(一)

    今天周四没有想去上的课,早八点到中午11点半,下午吃完饭后稍微完善了一下,目前代码可以在dev c++和vs2012上正常运行,性能分析我看资料上一大坨,考虑到目前状态不太好,脑袋转不动了,决定先放一 ...

  7. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning

    实验要求: Image Printing Program Based on Halftoning Objective: To know in principle what is "halft ...

  8. Individual Project

    这次我自己完成了一个小小的项目,课可以把这篇随笔当做一次实验报告,主要的内容是用JUnit进行单元测试.由于我的技术太弱了,就在博客园里"求师",按照大神的方法慢慢把这些东西写了下 ...

  9. Scrutiny of Partner's individual project Code

    因为队友的代码并没有完整的实现个人项目的完整功能. 已实现功能: 1.对单个单词进行词频统计 2.能够按照老师的要求的格式对制定的有效字符串进行匹配,并且输出至指定文件. 未实现: 1.对连续多个单词 ...

最新文章

  1. 如何在Git中克隆单个分支?
  2. clone-graph
  3. 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)
  4. Leetcode--397. 整数替换
  5. mysql导出kml_谷歌地图如何导出kml文件 导出kml文件教程
  6. 国内搜索大哥iOS面试题
  7. java9新特性有json吗,磨剑三年,跳票一年,Java9新功能有哪些神通?
  8. 所有浏览器的 CSS selectors 兼容性
  9. 利用wePE制作WinPE启动U盘全过程(含图文)
  10. 阴阳师服务器维护3月25日,《阴阳师》手游3月25日维护更新公告
  11. PhotoShop CC 2017软件工具面板使用---快速选择工具
  12. 分布式事务解决方案汇总:2PC、消息中间件、TCC、状态机+重试+幂等(转)
  13. 实验吧决斗场刷新刷新快刷新
  14. redhat 7 手册
  15. ubuntu 手机连接不到电脑,配置
  16. easypoi导入excel
  17. 美图春招产品实习面经
  18. 泰文,越南等字符串存数据库变成问号,解决办法。
  19. mysql性能优化和高可用架构实践pdf_实践大于一切!Alibaba最新MySQL性能优化+高可用架构全彩版PDF...
  20. 《一道论证题》by孙宇晨

热门文章

  1. Css3系列-新属性新布局
  2. 杭电1860--统计字符
  3. 三种基本的存储引擎比较
  4. android:windowSoftInputMode属性详解
  5. JVM—内存模型JMM
  6. 性能优化—代码层面优化
  7. vue的 v-for 循环中图片加载路径问题
  8. Shell--cut用法
  9. 板邓:PHP获取当前页面url地址、参数
  10. 工作几年的感想(一)