软件工程作业----第三次
要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。
要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。
把获取的字符串进行分割处理,然后进行单词统计,我认为这是个瓶颈。如果优化这部分,会提高执行效率。
StringTokenizer st = new StringTokenizer(mp.toString(),", ?.!:\"\"''\n");//分割字符串 while (st.hasMoreTokens()) { String letter = st.nextToken(); int count; if (map.get(letter) == null) { count = 1;//表明了没有进行分割。 } else { count = map.get(letter).intValue() + 1; } map.put(letter,count); }
要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。
文本内容太大,war_and_peace.txt,有3.14M大小。读取需要花费时间。通过路径寻找文本文件,也需要时间,这个时间应该是可变的。字符串的拼接,时间应该与内容的大小成正比。
要求3 根据瓶颈,"尽力而为"地优化程序性能。
之前的路径是放在项目的目录下,现在的路径放在项目所在盘的目录下,String filepath =new File("/").getAbsolutePath()+ filename; 在遍历查找文本文件的过程中,少一层遍历,会减少时间。
要求4 再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图。