软工第一次作业 进度记录三 简单的性能分析
到了今天,编码工作已经基本完成。除了非文本文件的字符、单词计数仍然和标准答案不一样以外,文本文件计数都是正确的,而且效率较高。非文本文件的读取大概无解了,不打算修改了。
对于助教给出的样例,visual studio生成的Release版本exe能在30s内完成,linux下经过少许修改生成的可执行文件大约20s完成。
在visual studio上进行了一个简单的性能测试。分析如下:
1. fclose函数占用非独占时间最多,几近20%,但占用独占时间少。说明文件操作依然较慢,尤其是测试集中小文件较多。
2. 对词组的排序占据时间第二多,占11.36%。因为只需要查找前十个,因此我采用的是在统计结束后插入排序。暂时没有想到优化方案。
3. 对单词、词组的释放占据了第三多的时间,占11.14%。我的数据是动态分配内存存储的,所以这里时间多也很正常。考虑到现有性能已经较好,希望节省空间,而且就算更改为静态方式存储对性能改善也不会太大,还是维持现有的方案。
4. 占据第四多时间的依然是文件流操作……
总结:我原本以为string会成为性能瓶颈,结果并没有。文件操作比我想象中费时。