zoukankan      html  css  js  c++  java
  • 第三周作业之效能分析

    git地址:https://git.coding.net/wangwd/SecondAssignment.git

    要求0

      测试一

      消耗时间:2.978 S

      CPU参数:占用小于10%

     

      测试二

      消耗时间:5.273 S

      CPU参数:占用小于10% 

     

    测试三

    消耗时间:2.378 S

    CPU参数:占用小于10%

     

    要求1

    猜测代码瓶颈

    1 String line = " ";

    String不能动态分配内存,可能会使程序内存占用过多,以致拖慢整个程序的运行速度。

    要求2

    profile未优化的程序

    最花费时间的三个代码片段

    代码片段一(控制台读入)

    1 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    2         //bw = new BufferedWriter(new FileWriter("test.txt",true));   //true表示是否追加
    3         String str = br.readLine();    //接收用户输入
    4         while(!str.equals("exit")){//如果用户输入exit则退出循环
    5             line = line + " "+str;
    6             //继续接收输入    
    7             str = br.readLine();
    8             
    9         }

    代码片段二(存词)

     1 for(String s: str1){
     2         //判断s是否是字母开头
     3             if(s.matches(mt)){
     4                 if(!map.containsKey(s)){
     5                     //如果集合中不存在该单词,则将该单词加入该集合中并且计数设为1。
     6                     map.put(s,1);
     7                     //每当有新单词加入,计数加1。
     8                     count++;
     9                 }else{
    10                     //如果集合中存在该单词,则将该单词加入该集合中并且计数加1。
    11                     map.put(s,map.get(s)+1);
    12                     }
    13             }
    14         }

    代码片段三(排序)

    1 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());  
    2         Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {  
    3             //降序排序  
    4             @Override  
    5             public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
    6                 //return o1.getValue().compareTo(o2.getValue());  
    7                 return o2.getValue().compareTo(o1.getValue());  
    8             }  
    9         });  

    要求3

     改进代码瓶颈

    改进一

    改进前

    1 String line = " ";

    改进后

    1 StringBuilder line = new StringBuilder(" ");

    改进二

    改进前

    1 //将大写字符转换成小写字符(方便统计)
    2 line.toLowerCase();

    改进后

    1 //将大写字符转换成小写字符(方便统计)
    2 //字符串拼接
    3 String line1 = line.toString();
    4 line1 = line1.toLowerCase();

    要求4

    profile优化的程序

     虽然对程序改进了,但是好使的代码片段并没有改变。

    最花费时间的三个代码片段

    代码片段一(控制台读入)

    1 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    2         //bw = new BufferedWriter(new FileWriter("test.txt",true));   //true表示是否追加
    3         String str = br.readLine();    //接收用户输入
    4         while(!str.equals("exit")){//如果用户输入exit则退出循环
    5             line = line + " "+str;
    6             //继续接收输入    
    7             str = br.readLine();
    8             
    9         }

    代码片段二(存词)

     1 for(String s: str1){
     2         //判断s是否是字母开头
     3             if(s.matches(mt)){
     4                 if(!map.containsKey(s)){
     5                     //如果集合中不存在该单词,则将该单词加入该集合中并且计数设为1。
     6                     map.put(s,1);
     7                     //每当有新单词加入,计数加1。
     8                     count++;
     9                 }else{
    10                     //如果集合中存在该单词,则将该单词加入该集合中并且计数加1。
    11                     map.put(s,map.get(s)+1);
    12                     }
    13             }
    14         }

    代码片段三(排序)

    1 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());  
    2         Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {  
    3             //降序排序  
    4             @Override  
    5             public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
    6                 //return o1.getValue().compareTo(o2.getValue());  
    7                 return o2.getValue().compareTo(o1.getValue());  
    8             }  
    9         });  
  • 相关阅读:
    关闭Pinterest通知
    android——创建camera应用(译)
    Android样式——Styles
    Android Fragment学习(一)
    Win32汇编环境配置
    关于微信检测SDK应用的原理浅析(iOS)
    iOS的Mantle实战
    Objective-C运行时的一些技巧
    Autolayout入门教程
    基于RAC的通用TableView
  • 原文地址:https://www.cnblogs.com/wwd1993/p/7597396.html
Copyright © 2011-2022 走看看