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. JNDI:对java:comp/env的研究

    这两天研究了一下 context.lookup("java:comp/env/XXX")和直接context.lookup("XXX")的区别 网上关于这两个的 ...

  2. poj 3440 Coin Toss 概率问题

    这题主要是推导数学公式!!! 将概率问题转化为圆心所在的面积! 代码如下: #include<iostream> #include<stdio.h> #include<a ...

  3. linux Ubuntu12 设置root用户登录图形界面

    Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...

  4. Servlet课程0425(六) 不经过验证直接跳转---session实现不同页面之间共享数据

    在地址栏直接输入http://localhost:8080/myWebSite/wel 会发现页面也能跳转,只不过用户名和密码都为空,这是不可以的,因为没有经过验证非法登录了 Welcome,hell ...

  5. ArrayList源代码深入剖析

    第1部分 ArrayList介绍ArrayList底层采用数组实现,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java. ...

  6. (从终端看linux-2)浅析terminal创建时ptmx和pts关系

    我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devp ...

  7. PHP集成支付宝快速实现充值功能

    http://blog.lixiphp.com/php-alipay-fast-chongzhi/#axzz2tOypIl4r    

  8. 【剑指offer】求逆序对的个数

    2013-09-07 10:50:31 面试题36:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字构成一个逆序对.输入一个数组,求出这个数组中逆序对的总数. 小结: 最直观的的方法是: ...

  9. 高难度(1)什么是AR

    在介绍增强现实(AR)之前,需要先说说虚拟现实(VR) 虚拟现实是从英文Virtual Reality 一词翻译过来的,简称VR.VR 技术是采用以计算机技术为核心的技术,生成逼真的视.听.触觉等一体 ...

  10. JavaBean个人总结

    JavaBean在JSP程序中的应用 JavaBean是为Java语言设计的软件组件模型,具有可重复使用和跨平台的特点.可以通过JavaBean来封装业务逻辑,进行数据库操作等,从而很好的实现业务逻辑 ...