• 词频统计效能测试---------第二版


      在第一次的词频统计中,对JProfile这 款软件不是很熟悉,感觉数据不是很准确,在程序启动时JProfile总是提示Java虚拟机已退出,后来经过查阅知道解决方案:截图如下

      要将 keep vm alive 勾选上。

    程序的总体占用资源情况如下:

    当程序运行之后,cpu和内存的使用几乎在同一时间有一个明显的上升过程。

    各个对象使用情况如下:

    下面是热点函数的展示,这也和我在程序中运用时间戳确定建树函数[generateCharTree()]占用时间较多的情况相符。因为对这个程序来说主要时间都花费在单词树的建立上,后面的遍历与排序占用时间较少。

    下面列出cpu和内存占用情况的明细:

            cpu占用情况:                     

          

    内存占用情况:

      

     经过改进后热点函数如下:

    cpu使用情况:                                                        

     内存使用情况

     改进后的各个对象占用情况如下:

     有两处修改:1.是将每次读数据的缓冲区缩小了,有原来的每次读入128个字符修改为每次读入64个字符,这在图表中的反映是:Char[]的占用减小了,建树函数的调用次数减少,并且整个程序的内存也减小了(由原来的156MB降低到116MB),但是相应的读入数据的函数调用次数上升了。

    2.将在循环中调用函数或者属性的过程写在循环的外部。例如:for (int i = 0; i < text.length(); i++)改成

    int len=text.length();
    for (int i = 0; i < len; i++) {}   这个降低的很明显。

    效能分析有时候要在时空方面做一个折衷。我这次是以牺牲时间换取空间的占用减少实现的,事件反映在cpu占用率上。

     总结:每次读入64个字符虽然增加了函数的调用次数,但每次函数的处理时间以缓冲区的减少而加快了,这种速度上的提升使得程序整体的执行时间缩短了。 

    https://git.coding.net/muziliquan/classwork03.git

    git://git.coding.net/muziliquan/classwork03.git

  • 相关阅读:
    黄金现货平台
    现货黄金交易中的黑平台
    删除WIN7系统的共享文件
    delphi 通过控件的handle取得控件
    delphi 句柄
    Delphi EVariantTypeCastError错误的解决方法
    【HTML5】Canvas 实现放大镜效果
    使用CSS3制作导航条和毛玻璃效果
    js原生创建模拟事件和自定义事件的方法
    基于react-native实现的博客园手机客户端强势升级
  • 原文地址:https://www.cnblogs.com/liquan/p/5917818.html
Copyright © 2020-2023  润新知