软件工程作业----第三次

要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。

要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。

把获取的字符串进行分割处理,然后进行单词统计,我认为这是个瓶颈。如果优化这部分,会提高执行效率。

 StringTokenizer st = new StringTokenizer(mp.toString(),", ?.!:""''
");//分割字符串  
                   
                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个函数此时的花费。要求包括截图。

 git代码

链接:https://git.coding.net/lick468/wf.git

原文地址:https://www.cnblogs.com/lick468/p/7594439.html