• 彭思雨20190919-3效能分析


    此作业参加:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7628

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

    第一次运行:

     第二次运行:

     第三次运行:

     CPU参数:Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz 2.50 GHz

    第三次运行时间:1.028s

    第三次运行时间:1.261s

    第三次运行时间:1.245s

    平均运行时间:1.178s

    • 要求1 给出你猜测程序的瓶颈。

    功能3在进行文件批量统计的时候,首先是遍历文件夹下的文件,然后再分别对每一个文件进行词频统计,针对单个文件词频统计时也比较耗费时间,因为要将所有标点符号替换为空格,然后再将空格删掉,再对重复出现的单词进行计数统计,还要给出不重复单词的总的个数,并且还需要对计算出来的单词的个数进行降序排序。由此可分析,该程序在遍历文件夹和对文件夹中单个文件进行词频统计并排序比较浪费时间,我猜测是该程序的瓶颈。

    代码如下:

     1 //对map集合value进行排序。
     2     public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map, boolean isDesc) {
     3         Map<K, V> result = Maps.newLinkedHashMap();
     4         if (isDesc) {//降序
     5             map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByValue().reversed())
     6                     .forEach(e -> result.put(e.getKey(), e.getValue()));
     7         } else {
     8             map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByValue())
     9                     .forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
    10         }
    11         return result;
    12     }
     1 List<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String,Long>>((Collection<? extends Entry<String, Long>>) map.entrySet());
     2         int num = 0;
     3         // 排序
     4         Collections.sort(list,valueComparator);
     5         for(Entry<String, Long> a : list) {
     6             System.out.println(a.getKey()+"	"+a.getValue());
     7             ++num;
     8             if(num==15){
     9                 break;
    10             }
    11             }
    12         System.out.println("
    ");
    13     }

    • 要求2 通过 profile 找出程序的瓶颈。

     多次尝试用JProfiler进行效能分析,但出来的却是如下画面:

     经过多次找问题,多次尝试都没有出现要求的结果。又选择用Java自带的visuaiVM,在Eclipse中运行wf.java程序后,在java visualVM中显示出我刚才运行的demo.wf,但是CPU不支持,进行上网查询问题解决办法,未果。因此,要求2、3、4未能实现。

     

    • 要求3 根据瓶颈,"尽力而为"地优化程序性能。

    • 要求5 程序运行时间。
    附上本人代码wf.exe程序git地址,供老师测试: https://e.coding.net/xintongxue123/cipin.githttps://e.coding.net/xintongxue123/cipin.git
  • 相关阅读:
    CF627A Xor Equation
    CF865C Gotta Go Fast
    HDU 2222 Keywords Search
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
    BZOJ 3781: 小B的询问
    BZOJ 1086: [SCOI2005]王室联邦
    BZOJ 2120: 数颜色
    BZOJ 1503: [NOI2004]郁闷的出纳员
    BZOJ 3757: 苹果树
    BZOJ 1861: [Zjoi2006]Book 书架
  • 原文地址:https://www.cnblogs.com/peng-613/p/11570225.html
Copyright © 2020-2023  润新知