zoukankan      html  css  js  c++  java
  • 彭思雨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
  • 相关阅读:
    C#里List.Sort的用法
    解决在IE中返回JSON格式的数据时提示下载的问题
    关于json语句的相关用法
    vector数组的相关知识
    编程珠矶第一章阅读笔记
    第三周学习进度博客
    echarts以地图形式显示中国疫情情况实现点击省份下钻
    课堂作业,疫情数据统计(柱形图的生成)
    过滤器filter学习进度一
    android开发对应高德地图定位服务进度一
  • 原文地址:https://www.cnblogs.com/peng-613/p/11570225.html
Copyright © 2011-2022 走看看