感觉程序比较简单,所以没有写好多类,只是在一个类里写了几个方法。
类里边有四个属性,mode(记录词频的模式),rec[](记录词的string数组),amo[](记录词的数量),sum(记录词的数量)。
七个方法,一个Main入口,SerchFile(),GetWords(),Record(),Sort(),Combine(),WriteFile()六个方法。
预计用时5小时,实际用时3.5小时。
SerchFile()现成的类Directory和FileSystemInfo,10分钟。
GetWords()现成的StreamWriter和Split,10分钟。
Record()判断一下词是否重复,非常简单的算法,10分钟。
Sort()非常蠢自己手打了个排序,效率有点低,但是由于刚开始的时候习惯性的开数组,所以没什么好用的方法,20分钟。
Combine()Ext模式下同类词的合并,算法比较简单粗暴,O(n)的,10分钟。
WriteFile()没什么意思了,StreamWriter,时间忽略不计。
大部分的时间用在完成后的各种修改上,整理代码,优化一些小地方,四处看看别人的代码,看到了一些我没想到的东西就 改一改自己代码,玩一玩性能分析,今天下午临时改了需求分析,顺便改一改。
第一次测试,只搜集到13个样例,时间在1.8s左右,这东西每次有一定的随机性,手打排序果然太弱了。
第二次找了一个超大的样例,结果函数调用就不大搞得懂了,求大神指教。
另外有个问题,这个性能测试是不是随机收集数据的呢?每次用同样的目录搜集的样本数并不一样。
这个项目是用C#写出来的,C#这个语言就是需要一个熟练度,丰富的类和函数需要多用才能知道,多写一些多了解一些现成的类的使用,就能够更好的运用这个语言。
另外,我的面向对象思想太弱了,写出来的东西基本没有面向对象的概念。
经过各种修改需求和确定题意,终于算是收工了。
更新一下测试样例
1、空文件夹
2、隐藏文件夹
3、不同大小写的词
4、尾缀各种数字、字母的词
5、自己程序的.cs文件
6、超多层子目录
7、超多符号测试
8、开头三个字符字母、数字混杂
9、全套工程文件
10、超大样本,总大小2G,混杂很多不同类型的文件