单词统计

任务要求 : 实现一个程序太控制的,输出指定文件夹中*.cs , *.txt . *.cpp , *.h 中单词的统计

1、项目预计时间

因为这是我的第一个有些用处的C++程序,所以要多分配一些时间给准备

构思:构思没给多少时间,大体分了一下模块,1小时

查资料:分完模块发现好多想用的都不知道有没有这样的函数或者类,于是决定3小时查资料

第一次代码:先想用最简单的方法去做这个程序,先写出一个再说(其实是怕难得做不出来……) 预计4小时

第二次代码:对代码进行改进,改一改数据结构和一些算法,预计5小时

总共13小时

 

2、实际上……

构思基本没多少时间,忽略就好了……

查资料:什么乱八七糟的啊啊啊啊啊啊啊啊啊啊啊啊啊,查得心里都烦了。不过时间还好,总共前前后后加起来4小时左右

第一次代码:好久不写代码,果然很不行。。。。。。第一次用最简单的程序,什么优化都没有,硬生生用了我一下午加一晚上,大约6个小时吧

第二次代码:第一次运行速度实在是太!慢!了!不忍直视!!!于是写了第二个代码(后面会讲怎么改的),时间变快了好多有木有!!!花了好长时间有木有!!!其实也就8个小时左右吧

第三次代码:小伙伴们都太强大了,速度都太快,让我不忍直视,于是在其进行了改进,花了大约3小时改完的

于是总共就变成了21小时,快一天了……

 

3、代码质量分析

没有问题,真的好开心(之前被虐的好惨)

 

4、性能分析

这里以扫描D:\VS2012\Common7 为例(1.05G)

第一次代码:好慢好慢好慢好慢好慢好慢

根本扫不出来,扫了10分钟还是没有出来,不过小的测试点都是对的

第二次代码:

这次优化是优化了查找的数据结构和一些算法的调整。其实算法方面从时间复杂度来考虑没有改进很多,是把原本混合在一起的步骤(分词+插入)分成了两部分,分开进行,不过快了不少。数据结构方面,将原来线性查找改为了实用二叉树查找,时间复杂度降了将近1维,所以在气氛多种就跑了出来。

第三次代码:

在第一次优化之后,我的每次查找插入单词的时候都是用一个函数来比较大小,其中有两次强制转换。由于比较次数实在是多,占用了大量的时间,所以在树的每个结点的结构中加入了一个字符串,记录了每个单词转成小写之后的样子,方便比较。结果程序就变成了一分多钟。

 

5、测试用例

(1)最简单的测试

一个文档

The Kite Runner

Maybe life is a process of running

结果正确

(2)同样是上个分档, mode2

(3)额,还是上个,mode3

(4)测试一下数量

一个文件

cat cat caT dog Dog dOg

(5)测试一下多个文件

在文件夹中,一个和上个测试同样的文件,和一个文件夹a,

文件夹a有这个测试文件和文件夹b

文件夹b有有两个这个测试文件

(6)输入格式不对

控制台输出的(截屏好不容易弄到个清晰地……)

(7)非空格分隔

一个文件

jghbh8li[ykukvjh'bkuyjygb'

(8)强一点的,D:\VS2012\Common7

(9)单个大文件,mode1

The Kite Runner这本书

(10)还是上个文件,mode3

 

6、个人总结

很久没有去写程序了,手有些生,编码的速度明显不如从前。而且C++还是一门基本没有摸过的语言,感觉编写十分的生硬。要多加练习。

查资料的能力也需要加强。首先,在这次作业中,有的小伙伴使用了C++自带的哈希表的类,速度非常的快。这是我在编程之前根本就没有去想的一点。虽然听说编码相对复杂,但是速度快的惊人。应该在编程前查资料的时候更加全面的寻找解决办法。其次,在我查找资料到后来使用的的时候才发现,自己找到的资料有些没用,有些还不够,这点需要提高。

还有在程序运行速度上也需要提高。

posted on 2014-09-25 02:09  LuminKKE  阅读(135)  评论(0编辑  收藏  举报

导航