题目: http://www.cnblogs.com/jiel/p/3978727.html
1. 估计时间:
① 遍历目录找到所有文本文件 3天
② 编写统计词频的函数 排序的函数 并输出到文件 2天
③ 实现扩展模式 3天
2. 实际时间
有些忘记了...开启优化花了好长时间...因为自己的VS2012性能分析之后不能显示函数花费时间的百分比
加上是英文版 觉得看着不舒服 于是重装了中文版的2013
① 遍历目录找到所有文本文件 13小时
② 编写统计词频的函数 排序的函数 并输出到文件 1天
③ 实现扩展模式 1天
3.关于优化
先上未优化的性能分析图
可以看见最占时间的函数是 StrEqual() (比较两个string是否相等,大小写不敏感),因为我每找到一个符合的string都会遍历vector 中的所有string并和它们进行比较
我的优化方案是:
将word存入到二叉排序树,每次找到一个符合的string去和二叉树匹配,二分查找,很大程度上提高了效率,以下分析图用例和优化前的测试用例为同一测试用例
PS:
写完程序已经是24号了,25号上午上课,下午打了一会球,晚上面试...挤出了时间终于完成了优化,复习了关于树方面的知识,好高兴!
4.TestCases
注:程序默认输入格式是正确的
①测试带有空的子文件夹的目录
结果如下:
②测试扩展模式 -e2
与期望相符
③测试扩展模式 -e3
与期望相符
④测试大小写合并
与期望相符
⑤验证文件类型
若干个文件,内容都为:
hello Hello heLLo yyy XXX xxx xxx
文件类型分别为:
txt, cpp, h, cs, png
结果:
<Hello> 12
<XXX> 12
<yyy> 4
与期望相符
⑥测试词的区分能力
inm@#ydream#@iamnots ofaraw*(()ayfr!@o mhome
结果:
<ayfr> 1
<iamnots> 1
<inm> 1
<mhome> 1
<ofaraw> 1
<ydream> 1
与期望相符
⑦测试递归扫描能力
根目录下是一个文件和一个目录,目录下是一个文件和一个目录,目录下又是一个文件。
三个文件都是txt,内容一致:
inm@#ydream#@iamnots ofaraw*(()ayfr!@o mhome
结果:
<ayfr> 3
<iamnots> 3
<inm> 3
<mhome> 3
<ofaraw> 3
<ydream> 3
与期望相符
⑧测试词的排序能力
与期望相符
⑨测试连续两词
与期望相符
⑩测试空文件夹或空文件
屏幕输出 “没有符合的word”
注:一些TestCases参照了张艺同学和黎柱金同学的Cases,特别感谢你们提供了不错的测试方案!!
5.所学
学会了用性能分析工具查看哪部分代码浪费了时间,学到了WIN32_FIND_DATA结构体,学到了关于fstream操作文件方面的知识等。