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

  在第一次的词频统计中,对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

时间: 2024-12-26 08:33:34

词频统计效能测试---------第二版的相关文章

2nd 词频统计效能测试

词频统计效能测试 使用Codeblocks下的Cppcheck插件进行效能测试,可以集成在IDE中进行检测,也可以直接使用图形化界面来进行检测.

第二周:词频统计效能测试

效能测试:linux下的top命令.Top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 一.效能改善前: 二.引入count变量 三.效能改善后: 四.总结: 上图是top指令显示出的cpu与内存占用,在vmuser创立的java进程中cpu占用率从50%在几秒钟的时间内飙到150%(ubuntu计算cpu占用率要乘以核心数所以可能

效能分析——词频统计器(第二版)

第一次分析结果: 分析: 整个词频统计器的代码都放在了main()一个函数里,导致无法分析程序效能 改进: 将代码分块书写 问题: 大的TXT文件在devc++编译器下可以运行,在VS下运行出错

词频统计(WEB)版

需求: 在以前的基础上把程序迁移到web平台,通过用户上传TXT的方式接收文件. 前端页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/199

词频统计 效能分析

VS2015有一个非常强大的功能,就是诊断工具(Diagnotic Tools),它能在调试时及时也监控CPU.内存的变化.这个功能可以方便地帮助我们在调试的过程及时地跟踪程序的性能. 调试新诊断工具窗口.项目类型和调试配置支持(post)的描述,看到一个“诊断工具”窗口出现当你开始调试(按F5) 内存占用情况 cpu占用情况 函数如下 改进后

C语言实现词频统计——第二版

原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 2.支持命令行输入英文作品的文件名 3. 支持命令行输入存储有英文作品文件的目录名,批量统计 4. 从控制台读入英文单篇作品,重定向输出 代码实现: 在原代码的基础上稍做了修改,使之可以批量读取文件夹下的所有文件,所以加了一个mode来判断是单个文件输入还是文件夹输入,来不及整理程序,所以现在程序有点丑.这次

词频统计的效能测试。

因为我的词频统计程序是拿Python语言编写的,所以在网上查找了适用于Python语音的效能测试工具. 1.介绍性能分析器 profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述.Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats.这些分析器提供的是对Python程序的确定性分析.同时也提供一系列的报表生成工具,允许用户快速地检查分析结果. Python标准库提供了3个不同的性能分析器: cProfile:推荐给大部

第二周作业-词频统计

本周作业是词频统计,编程具体要求如下: https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922 对实现功能进行简要的介绍: 功能一:小文件输入,为表明程序能跑.需要在控制台下输入命令,得到文件中不重复的总单词数.并对单词出现的次数进行排序输出. 功能二:支持命令行输入英文作品的文件名,亲自录入,输出显示不重复单词总数,并对出现频率最高的前10的单词进行输出 功能三:支持命令行输入存储有英文作品文件的目录名,批量统计词频. 功能四:

软件工程第二次作业 词频统计

1.项目名称:词频统计 2.代码地址:https://coding.net/u/songyuu/p/python_wf/git 3.代码如下: 1 import os 2 import re 3 import collections 4 #print(os.getcwd()) #显示wf.py路径 5 #print(os.listdir())#显示目录下的文件 6 file_name=input("wf ") 7 if not os.path.isfile(file_name+'.tx