Individual Project 1 总结

时间:2022-09-19 20:35:57

题目: http://www.cnblogs.com/jiel/p/3978727.html

1. 估计时间:

① 遍历目录找到所有文本文件 3天

② 编写统计词频的函数 排序的函数 并输出到文件 2天

③ 实现扩展模式 3天

2. 实际时间

有些忘记了...开启优化花了好长时间...因为自己的VS2012性能分析之后不能显示函数花费时间的百分比

加上是英文版 觉得看着不舒服 于是重装了中文版的2013

① 遍历目录找到所有文本文件 13小时

② 编写统计词频的函数 排序的函数 并输出到文件 1天

③ 实现扩展模式 1天

3.关于优化

先上未优化的性能分析图

Individual Project 1 总结

Individual Project 1 总结

可以看见最占时间的函数是 StrEqual() (比较两个string是否相等,大小写不敏感),因为我每找到一个符合的string都会遍历vector 中的所有string并和它们进行比较

我的优化方案是:

将word存入到二叉排序树,每次找到一个符合的string去和二叉树匹配,二分查找,很大程度上提高了效率,以下分析图用例和优化前的测试用例为同一测试用例

Individual Project 1 总结

PS:

写完程序已经是24号了,25号上午上课,下午打了一会球,晚上面试...挤出了时间终于完成了优化,复习了关于树方面的知识,好高兴!

4.TestCases

注:程序默认输入格式是正确的

①测试带有空的子文件夹的目录

Individual Project 1 总结

结果如下:

Individual Project 1 总结

②测试扩展模式 -e2

Individual Project 1 总结

与期望相符

③测试扩展模式 -e3

Individual Project 1 总结

与期望相符

④测试大小写合并

Individual Project 1 总结

与期望相符

⑤验证文件类型

若干个文件,内容都为:

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

与期望相符

⑧测试词的排序能力

Individual Project 1 总结

与期望相符

⑨测试连续两词

Individual Project 1 总结

与期望相符

⑩测试空文件夹或空文件

屏幕输出 “没有符合的word”

注:一些TestCases参照了张艺同学和黎柱金同学的Cases,特别感谢你们提供了不错的测试方案!!

5.所学

学会了用性能分析工具查看哪部分代码浪费了时间,学到了WIN32_FIND_DATA结构体,学到了关于fstream操作文件方面的知识等。