码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-09-28 22:32:16      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

  在第一次的词频统计中,对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的使用上,cpu的使用上升了4个百分点。

有一个问题还未解决:为什么缓冲字符改为64后,当程序运行结束后,内存的使用一直保持在一个稳定状态不下降(之前是程序运行完后内存的使用率马上就下降了),有待研究,如果读者有看法,欢迎发表意见。

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

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

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

标签:

原文地址:http://www.cnblogs.com/liquan/p/5917818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!