软件工程——第三次作业(2)效能分析

本次作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/956

本人代码地址:https://git.coding.net/ss505072461/wf.git   

————————————————————————————————————————————————

  首先我下载了老师提供的计时器ptime.exe:https://git.coding.net/younggift/word_count_demo.git

  在命令行环境下进行了3次时间测试,测试文本内容以及结果如下:

测试文本内容:

软件工程——第三次作业(2)

而测试的三次结果:

软件工程——第三次作业(2)

软件工程——第三次作业(2)

软件工程——第三次作业(2)

  而三次测试也可以看出来,我的程序统计效率十分低下,一个五十多万单词的文章进行词频统计居然需要近5分钟的时间……(在测试了别人的几秒后,虽然早有心理准备,但是还是备受打击啊……)

  接下来,我在Visual Studio 2015中,使用性能探查器进行了一次性能上的测试:

软件工程——第三次作业(2)

软件工程——第三次作业(2)

  经过了再一次漫长的5分钟等待,样本分析报告出来了:

软件工程——第三次作业(2)

  由于我在上一周制作这个程序之前,对于C#语言完全没有了解,导致在编程实现目标的时候,将所有实现目标功能的代码全部塞在了main主函数中,因此,在分析结果中,wf.Program.Main执行了近乎全部的工作。

  CPU的使用百分率在5分钟这个比较长(对于这个小程序来说5分钟确实是一个很差的效率)的时间段里,基本上维持在一个很平稳的状态(标记中显示是11-12%)。

软件工程——第三次作业(2)

  在效能测试开始之前,我对于我程序中效率最差的地方就已经有了大致的认知,是在实现词频统计功能的过程中,统计完相同单词后,将其从单词数组中剔除的那一步骤代码:

 1 for (int i = 0; i < sWord; i++)
 2 {
 3     countWord[i] = 1;
 4     for (int j = i + 1; j < sWord; j++)
 5     {
 6         if (textArray[i].Equals(textArray[j]))
 7         {
 8             countWord[i]++;
 9             //删除掉被统计过的单词
10             for (int k = j + 1; k < sWord; k++)
11                 textArray[k - 1] = textArray[k];                        
12             sWord--;
13             j--;
14         }
15     }
16 }
View Code

相关文章: