[金山办公]

[文件监控器]

性能测试报告 版本号: V1.0 2022年 8月 19 日 # 1 概述 ## 1.1 编写目的 编写该测试总结报告主要有以下几个目的:
  1. 熟练对性能测试分析工具的使用,方便对后续代码的优化
  2. 通过对测试结果的分析,对系统整体质量有所了解
  3. 根据分析报告中得出的结论进行性能优化

1.2 阅读对象

  1. 主要读者:开发
  2. 其他读者:无

1.3范围

本次测试是针对整个文件监控器的性能测试,包括选取文件夹路径、设置过滤条件、设置监控内容、开始监控、最小化界面、最小化下消息提示及忽略消息、最小化放大、停止监控、查询监控日志内容、保存监控日志、清除日志、退出程序。

2 测试工具

测试工具有两个,分别是VS性能探查器以及VS自带的性能检测工具。其中VS性能检测器从以下几个方面检测:1整个报告概要说明。2.调用树:以树形表格的方式展开函数之间的关系。3.模块:分析调用的不同的程序模块。4.调用方/被调用方:以数值显示的调用与被调用的关系。5.函数:以数值显示的各个函数的执行时间和执行次数统计值。6.进程:显示当前进程的信息。7.函数详细信息:以图表的方式形象地显示调用函数-当前函数-被调用子函数之间的关系和时间比例。下图是VS性能检测器的启动页面:

KFileMonitor performance test report - 图1

VS自带的诊断工具主要用到的分析数据就是的CPU使用率,通过选取合适时间段的CPU使用情况,找出CPU占用比较多的函数进行瓶颈突破。

3 测试结果及分析

一:VS检测器结果

1.1 整个报告概要说明

性能探测器运行期间的整个测试流程如下:

选取文件夹路径、设置过滤条件、设置监控内容、开始监控、最小化界面、最小化下消息提示及忽略消息、最小化放大、停止监控、查询监控日志内容、保存监控日志、清除日志、退出程序。

KFileMonitor performance test report - 图2

可以看出,在运行完所有命令之后,除了少数几处突出之外,CPU使用率曲线较为平滑,对其中几个有轻微波动的时间端进行了截取,结果如下所示:

KFileMonitor performance test report - 图3

可以看到这一段是程序模型加载,tableview占比最高,其为数据库初始化及QTableview模块。

查看最热的函数(QTableview)详情信息,其主要功能为弹出颜色选择框,如下所示:

KFileMonitor performance test report - 图4

当前函数占用时间最多的是函数体构建,调用堆栈的底部。

KFileMonitor performance test report - 图5

可以看出这一段是QFileDialog命令,功能是选取监控文件夹目录。

KFileMonitor performance test report - 图6

占比最高的函数是弹出文件选择框。

当前时间段占比最高的函数是ReadDirectoryChangesw(),功能是监控文件。

KFileMonitor performance test report - 图7

KFileMonitor performance test report - 图8

当前时间段占比最高的函数是全局数据类,设置监控开始与停止的flag。

KFileMonitor performance test report - 图9

当前时间段占比最高的函数是保存数据函数,主要功能是弹出保存文件对话框,并保存数据。

KFileMonitor performance test report - 图10

KFileMonitor performance test report - 图11

当前时间段占比最高为弹出退出对话框,选择是最小化还是退出软件。

KFileMonitor performance test report - 图12

KFileMonitor performance test report - 图13

1.2 调用树:以树形表格的方式展开函数之间的关系

KFileMonitor performance test report - 图14

从上图可以看到占用时间最多的是KselectBar()、kcheckbar( ) 和Kfilemonitor(),功能为读取过滤条件及调用监控软件。

1.3 模块:分析调用的不同的程序模块

KFileMonitor performance test report - 图15

以上是整个测试过程中,各个函数的调用次数,其中调用次数较多的是Kfilemonitor.exe中的KselectBar()、kfunctionbar()、kdirectorybar()和Kfilemonitor()。

1.4 调用方/被调用方:以数值显示的调用与被调用的关系

1.5 函数:以数值显示的各个函数的执行时间和执行次数统计值

KFileMonitor performance test report - 图16

大部分时间都是被Qt文件保存和弹出颜色选择对话框占用。

KFileMonitor performance test report - 图17

1.6 进程:显示当前进程的信息

KFileMonitor performance test report - 图18

1.7 函数详细信息

该功能是以图表的方式形象地显示调用函数-当前函数-被调用子函数之间的关系和时间比例。

在main()函数中,大部分时间都在执行KTableView()函数,进行数据实时显示。

KFileMonitor performance test report - 图19

二、优化分析

优化程序结构、把数据显示与主函数分开,减少CPU占比。