【空文件测试】(认为空文件行数为0)
【基本测试】
【大小写测试】
可以看出abcd同类型的词出现了三次,而单词树中存储的是ABCd,满足大小写要求。
【复杂文件测试】
前三项数据比较接近,但是单词和词组统计的个数稍有差异,因此导致了排名的差异。
【性能分析】
使用助教提供的数据集,在Release条件下跑出的时间大概七八十秒。说明平衡二叉树在大量数据的查找具有不错的性能。
程序运行指标如下:
主函数运行情况分析:
可以看出词组平衡树的插入,单文件信息获取以及同词组类型判断这三个函数占用的时间比较多,优化应当从这几函数考虑。
时间主要集中在strcmp,暂无优化方案
时间开销主要是函数isSamePhrase引起的,同上无较好解决方案。
从上面几幅图可以看出,时间开销比较明显的全部集中在系统调用的函数上,如strcmp,fgetc,所以合理的优化方案是改变程序的结构,考虑使用多线程,以提高CPU利用率和减少时间。