一、效能分析
1、作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2139
2、git地址:https://git.coding.net/kefei101/wfAnalysis.git
3、对wf小程序的功能三进行效能分析,以war_and_peace.txt作为测试文件,使用效能分析工具ptime.exe,连续运行三次,给出每次消耗时间。
说明:下载后,将自己的wf.exe放到word_count_demo文件夹,打开cmd命令行,首先输入ptime wf,再写自己的小程序命令。
三次运行结果如下图所示:
| 次数 | 时间 |
| 1 | 3.950s |
| 2 | 2.851s |
| 3 | 2.157s |
| 平均 | 2.984s |
二、猜测瓶颈
针对测试文档war_and_peace.txt,所用到的流程是
所用到的方法有Jagger类的JaggerFormat(),ReadTxt类的txtToString()方法,SortMap类的sortMap(Map map,int num)方法。
我认为程序中耗时较多的函数方法/程序段有以下几个:
(1)我的程序是一层一层深入的,从判断,到逐层进入对应方法,从而执行方法,输出结果。那么我想在JaggerFormat()方法中耗时的有:判断输入格式,分隔字符串
当然这里面还有我的附加功能(输入格式第一个单词是wf.exe所处的文件夹名)所用到的获取路径方法,我觉得这所占时间是必须的,这也是我的程序比他人运行时间更长的原因之一。
1 //用 stringTokenizer 方法截取输入格式每个单词,放入list中 2 StringTokenizer stringTokenizer = new StringTokenizer(order, " \n"); 3 ArrayList<String> list = new ArrayList<String>(); 4 while (stringTokenizer.hasMoreElements()) { 5 list.add(stringTokenizer.nextToken()); 6 } 7 8 //判断第一个单词是否是wf程序所处文件夹名 9 String project = System.getProperty("user.dir"); 10 project = project.substring(project.lastIndexOf('\\') + 1, project.length());