这里使用的是 Java visualVM:

目前只对不同的输出方式进行了分析,结果如图(测试文件为《战争与和平》):

输出到文件:

关于词频统计的效能测试

CPU占用率最高仅有0.7%,目前未能得知是什么问题导致的波动这么小,或者是CPU运算能力太强?又或者是算法太好(当作玩笑吧,还没自大的认为自己的算法这么厉害)?

输出到控制台:

关于词频统计的效能测试

同样的问题,在折线图中CPU占用率波动几乎显示不出来,最高仅有1.1%。

由于统计数据有问题,改用Jprofiler进行统计分析。首先是输出到控制台的方式:

关于词频统计的效能测试

其中CPU占用率达到24.41%,其后再次测试了改动后的输出方式:

关于词频统计的效能测试

CPU占用率最高只有15.6%,优化了不少。当输出到文件时,运行速率明显提升,因此加入了一项判断:当统计的文件过大时自动将结果输出到文件中。

关于词频统计的效能测试

这里因为需要用char[]来接收文件中字符,因此使用次数最多。

关于词频统计的效能测试

  本次采用重定向输入方式,因此scanner.nextline占据了绝大部分,也可以看到其总耗时超过3万毫秒。另外程序中只自定义了一个函数,用来统计词频,因此调用次数只有一次。下面直接用传入文件的方式重新运行一遍,结果如下:

关于词频统计的效能测试

  不需要scanner读入文件内容,运行速度明显提高,总耗时不到3000毫秒!

 

相关文章:

  • 2021-10-30
  • 2021-07-04
  • 2021-12-01
  • 2021-09-11
  • 2022-03-03
  • 2021-10-06
  • 2021-09-11
  • 2021-12-19
猜你喜欢
  • 2021-11-26
  • 2022-01-05
  • 2021-07-19
  • 2021-06-30
  • 2021-08-19
  • 2022-02-24
  • 2021-08-16
相关资源
相似解决方案