完成了除去linux下性能分析的所有功能,优化工作已经完成,往Linux移植也已经成功,结果上字符数与单词数目与助教略有差异,但是单词数目与另外两个同学相同,感觉有太多细节需要考虑,可能每个人都有所遗漏。但是单词与词组前十判定条件相对苛刻,因此与助教获得了完全相同的结果。
这样任务基本完全完成,并且测试了几个例子(空文件,只有一个单词的文件,只有一个单词并且是数字后缀的文件,多个单词,并且多数字后缀的文件),没有出现明显的bug,最后的exe文件跑测试文件在我I5-5200U,固态硬盘上速度跑大约28s,机械硬盘大概52s,极致优化版本可以在固态上跑到27s,机械盘跑到50s,但是在top10单词中若有单词超过20位长会出现大小写错误,得希望最后测试时候也能顺利吧。
而且发现了一件尴尬的事情,我电脑上vs2017默认的编码是UTF-16LE(不知道为什么),上传到github上后最重要的的cpp文件显示为不可识别的二进制文件,看不到代码更改的细节,无奈只能一份一份的下载下来重新改了编码方式传上去。
最后看一下所花的实际时间与预期差距。
进度规划 | 计划用时 | 实际用时 |
---|---|---|
理清逻辑思路 | 60min | 60min |
实现文件夹递归遍历 | 30min |
43min+30min (没有完全实现导致后来出现bug,加上了修改的时间) +(linux移植文件夹遍历时间) |
统计字符以及行数 | 30min | 20min(字符数目仍与助教结果有差异) |
统计单词数目 | 70min | 300min(经过多个测试文件发现多个bug,直到现在用时,可能还有bug) |
统计词组数目 | 40min |
30min |
字典格式输出 | 120min | 280min(因为用的无序关联容器,这个问题变得极其棘手) |
代码优化 | 50min | 40min(可能因为我太菜了,看到的性能瓶颈感觉都是必须的,比如读取字符,查找键值,只有一处做出有成效的优化) |
linux性能分析 | 80min | 没有linux使用经验,还需要安装性能分析工具 |
收尾工作,测试细节 | 80min | 跟助教不一样的感觉要交流好久 |
今晚无眠,将优化过程以及单元测试整理一下发出来。