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++里各种容器也算有了个详细的了解,方便以后使用。

  学会了如何遍历文件夹,以及对一些函数的运行速度有了更深的了解。

  总的来说是一次很不错的实践。完

Project: Individual Project - Word frequency program----11061192zmx的更多相关文章

  1. SoftwareEngineering Individual Project - Word frequency program

    说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹 ...

  2. Individual Project - Word frequency program by HJB

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;us ...

  3. Limeng:Individual Project: Word frequency program -BUAA Advanced Software Engineering

    11061190-李孟 Implement a console application to tally the frequency of words under a directory (2 mod ...

  4. Individual Project - Word frequency program - Multi Thread And Optimization

    作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...

  5. Individual Project - Word frequency program——12061154Joy

    Description&Requirement: http://www.cnblogs.com/jiel/p/3978727.html 项目时间估计 理解项目要求: 1h 构建项目逻辑: 1h ...

  6. Individual Project - Word frequency program

    1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...

  7. Record for Individual Project ( Word frequency program )

    1.  预计时间 ● 对问题总体的理解.规划:10 min ● 设计编写程序:5 h ● 调试: 分模块-40 min; 总体-40min ● 测试(性能分析).改进:1 h 2.  实际用时 ● 对 ...

  8. THE First Individual Project - Word frequency program

    第一次写博客,这次也是本学期写到第一个程序. 老师要求网址:http://www.cnblogs.com/jiel/p/3311400.html#2777556 一.项目预计时间 一开始想使用不熟悉的 ...

  9. Project: Individual Project - Word frequency program-11061160顾泽鹏

    一.预计用时: (1)明确要求:15min: (2)文件的遍历:1h: (3)Simple mode 词频统计:0.5h: (4)extend mode 词频统计:1h: (5)对单词词频排序输出:0 ...

随机推荐

  1. Android 图片旋转(使用Matrix.setRotate方法)

    imageView2 = (ImageView) findViewById(R.id.img2); Bitmap bitmap = BitmapFactory.decodeResource(getRe ...

  2. php获取类的实例变量

    <?php class Page {private $title; //构造函数固定名称为__construct,这样能将php的类构造函数独立于类名,以后修改类名就无需修改构造函数名称 fun ...

  3. c缺陷与陷阱笔记-第七章 可移植性代码

    1.移位运算符 如果被移位的对象长度是n位,那么移位计数必须>=0,并且<n,例如对于1个32位的数,移位运算n<<31和n<<0是OK的,n<<32和 ...

  4. CURL 多线程问题

    http://blog.csdn.net/wslz2001/article/details/12117127 默认情况下libcurl完成一个任务以后,出于重用连接的考虑不会马上关闭 如果没有新的TC ...

  5. Servlet课程0426(九)Servlet服务器端创建Cookie和客户端读取Cookie

    服务器端创建Cookie: Win7默认Cookie位置 C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies Cookie ...

  6. MYSQL 优化建议

    转自 http://coolshell.cn/articles/1846.html MYSQL 优化建议20条 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效 ...

  7. POJ1328——Radar Installation

    Radar Installation Description Assume the coasting is an infinite straight line. Land is in one side ...

  8. jquery ui autoComplete自动完成

    官网:http://jqueryui.com/autocomplete 最简单的形式: var availableTags = [ "ActionScript", "Ap ...

  9. IMX51启动模式

    相关链接: http://blog.csdn.net/kickxxx/article/details/7236040 http://blog.csdn.net/evilcode/article/det ...

  10. 【HDOJ】3686 Traffic Real Time Query System

    这题做了几个小时,基本思路肯定是求两点路径中的割点数目,思路是tarjan缩点,然后以割点和连通块作为新节点见图.转化为lca求解.结合点——双连通分量与LCA. /* 3686 */ #includ ...