应用操作非易失性存储器的性能测试数据处理方法和装置与流程

文档序号:14249337阅读:240来源:国知局
应用操作非易失性存储器的性能测试数据处理方法和装置与流程

本发明涉及非易失性存储器测试技术领域,特别是涉及一种应用操作非易失性存储器的性能测试数据处理方法和装置。



背景技术:

目前通用的计算机结构中,一般包括作为内存储器的易失性存储器和作为外存储器的非易失性存储器。易失性存储器可以暂时、高效地存储数据,但数据最终需写入非易失性存储器中长期保存。非易失性存储器通常包括磁存储器和半导体存储器,磁存储器又可以包括磁芯存储器、磁鼓存储器和磁盘存储器。

目前对非易失性存储器的测试主要采用专用的测试工具单纯测试非易失性存储器的读取和写入速度等性能指标,难以反映应用在操作非易失性存储器时的实际性能。



技术实现要素:

基于此,有必要针对目前对非易失性存储器的测试难以反映应用实际操作非易失性存储器的性能的问题,提供一种应用操作非易失性存储器的性能测试数据处理方法和装置。

一种应用操作非易失性存储器的性能测试数据处理方法,包括:

挂钩操作系统提供的用于操作非易失性存储器的系统函数,使得所述系统函数由被测应用输入参数并调用时触发对自定义函数的调用;

通过所述自定义函数并根据所述参数操作所述非易失性存储器;

通过所述自定义函数采集操作所述非易失性存储器所产生的性能测试数据,并将采集的性能测试数据记录在日志文件中;所述日志文件中的性能测试数据用于据以分析所述被测应用操作所述非易失性存储器的性能指标。

一种应用操作非易失性存储器的性能测试数据处理装置,包括:

挂钩模块,用于挂钩操作系统提供的用于操作非易失性存储器的系统函数,使得所述系统函数由被测应用输入参数并调用时触发对自定义函数的调用;

自定义函数执行模块,用于通过所述自定义函数并根据所述参数操作所述非易失性存储器;通过所述自定义函数采集操作所述非易失性存储器所产生的性能测试数据,并将采集的性能测试数据记录在日志文件中;所述日志文件中的性能测试数据用于据以分析所述被测应用操作所述非易失性存储器的性能指标。

上述应用操作非易失性存储器的性能测试数据处理方法和装置,挂钩用于操作非易失性存储器的系统函数,系统函数被被测应用调用时能够回调自定义函数,从而通过自定义函数操作非易失性存储器,并将操作产生的性能测试数据记录在日志文件中,该日志文件中的性能测试数据可用来分析被测应用操作所述非易失性存储器的性能指标。被测应用在运行过程中,若操作了非易失性存储介质,产生的相应性能测试数据会被记录在日志中,该日志中的性能测试数据可表达被测应用操作非易失性存储器的实际性能,可用于后续分析被测应用操作所述非易失性存储器的性能指标。

附图说明

图1为一个实施例中应用操作非易失性存储器性能测试系统的应用环境图;

图2为一个实施例中可用作终端和服务器的电子设备的内部结构示意图;

图3为一个实施例中应用操作非易失性存储器的性能测试数据处理方法的流程示意图;

图4为一个实施例中根据日志文件分析被测应用是否存在读或写效率问题的步骤的流程示意图;

图5为一个实施例中利用测试用例进行自动化场景测试并控制挂钩开启和取消的步骤的流程示意图;

图6为另一个实施例中应用操作非易失性存储器的性能测试数据处理方法的流程示意图;

图7为一个实施例中应用操作非易失性存储器的性能测试数据处理方法所实现的各个功能示意图;

图8为一个实施例中通过自定义函数在单次文件操作过程中操作非易失性存储器中文件的示意图;

图9为一个实施例中应用操作非易失性存储器的性能测试数据处理装置的结构框图;

图10为另一个实施例中应用操作非易失性存储器的性能测试数据处理装置的结构框图;

图11为又一个实施例中应用操作非易失性存储器的性能测试数据处理装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一个实施例中应用操作非易失性存储器性能测试系统的应用环境图。参照图1,该应用操作非易失性存储器性能测试系统包括终端110和服务器120。终端110上运行有被测应用。终端110可用于挂钩终端110上操作系统提供的用于操作非易失性存储器的系统函数,使得系统函数由被测应用输入参数并调用时触发对自定义函数的调用。终端110可用于通过自定义函数并根据参数操作非易失性存储器。终端110可用于通过自定义函数采集操作非易失性存储器所产生的性能测试数据,并将采集的性能测试数据记录在日志文件中。终端110可用于输出日志文件至服务器120;日志文件中的性能测试数据用于据以分析被测应用操作非易失性存储器的性能指标。服务器120可用于根据日志文件中的性能测试数据分析被测应用操作非易失性存储器的性能指标。服务器120可替换为个人计算机,终端110和服务器120的功能可以在同一个电子设备上实现。

图2为一个实施例中可用作终端和服务器的电子设备的内部结构示意图。如图2所示,该电子设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,电子设备的非易失性存储介质存储有操作系统,还包括一种应用操作非易失性存储器的性能测试数据处理装置,该应用操作非易失性存储器的性能测试数据处理装置用于实现一种应用操作非易失性存储器的性能测试数据处理方法。该处理器用于提供计算和控制能力,支撑整个电子设备的运行。电子设备中的内存储器为非易失性存储介质中的应用操作非易失性存储器的性能测试数据处理装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种应用操作非易失性存储器的性能测试数据处理方法。网络接口用于与外部进行网络通信,如输出或接收日志。该电子设备可以是移动终端、个人计算机或者服务器,移动终端比如手机、平板电脑、个人数字助理或穿戴式设备等。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

图3为一个实施例中应用操作非易失性存储器的性能测试数据处理方法的流程示意图。本实施例主要以该方法应用于上述图1中的应用操作非易失性存储器性能测试系统中的终端110进行举例说明。参照图3,该方法具体包括如下步骤:

s302,挂钩操作系统提供的用于操作非易失性存储器的系统函数,使得系统函数由被测应用输入参数并调用时触发对自定义函数的调用。

其中,挂钩(hook)也称为钩子,程序可以对指定的事件进行挂钩,当已挂钩的事件发生时,对该事件进行挂钩的程序会收到通知,从而可以对该事件进行响应。非易失性存储器也可以称为非易失性存储介质,可以包括磁存储器和半导体存储器,磁存储器又可以包括磁芯存储器、磁鼓存储器和磁盘存储器。

对非易失性存储介质的操作包括打开文件、读数据、写数据和关闭文件中的至少一种。用于操作非易失性存储器的系统函数由操作系统提供,可由被测应用调用。用于操作非易失性存储器的系统函数,是用于i/o(iinput/output,即输入或输出端口)操作的系统函数。

用于操作非易失性存储器的系统函数比如用于按字节从文件中获取数据的系统函数fileinputstream,或者按字节向文件写入数据的系统函数fileoutputstream,按字符从文件中读取数据的系统函数filereader,按字符向文件中写入数据的系统函数filewriter等。输入系统函数的参数比如写数据或读数据所作用文件的文件描述符,写数据或读数据的起始位置,读数据的数据大小或者写数据的数据内容等。

终端可通过被测应用挂钩操作系统提供的用于操作非易失性存储器的系统函数。具体地,终端可通过被测应用集成的sdk(softwaredevelopmentkit,软件开发工具包)挂钩操作系统提供的用于操作非易失性存储器的系统函数,终端还可以通过被测应用对系统函数进行远程线程注入以实现挂钩系统函数。

进一步地,终端在挂钩系统函数时,可将系统函数的函数地址替换为自定义函数的函数地址,从而被测应用在向系统函数输入参数进行调用时,根据替换后的函数地址直接将参数输入自定义函数以调用该自定义函数。

s304,通过自定义函数并根据参数操作非易失性存储器。

具体地,自定义函数包括系统函数的代码,于是终端可通过调用自定义函数,根据被测应用输入的参数操作非易失性存储器,实现与系统函数根据参数操作非易失性存储器相同的功能。对非易失性存储器的一次操作通常包括一系列子操作,如打开文件、读数据以及关闭文件,或者如打开文件、写数据以及关闭文件。

s306,通过自定义函数采集操作非易失性存储器所产生的性能测试数据,并将采集的性能测试数据记录在日志文件中。日志文件中的性能测试数据用于据以分析被测应用操作非易失性存储器的性能指标。

其中,性能测试数据是反映被测应用操作非易失性存储器性能的数据。性能测试数据具体可以包括被测应用在操作非易失性存储器时所采用的进程名、线程名、单次文件操作过程中读或写的数据总量、单次文件操作过程中读或写的次数以及被测应用在单次运行过程中所操作的非易失性存储器中文件的文件名中的一种或几种的组合。

日志文件可以记录为csv(comma-separatedvalues,逗号分隔值文件格式)格式或者txt格式。每次操作非易失性存储器所产生的性能测试数据记录为日志文件中的一条记录。性能指标是指量化表示被测应用操作非易失性存储器的性能的维度,如是否存在通过主线程操作非易失性存储器的性能问题,读或写效率高低,是否存在重复操作文件问题,操作耗时长短等。

具体地,自定义函数不仅包括系统函数的代码,还包括自定义代码。终端在调用自定义函数时,通过执行该自定义函数中的自定义代码,将本次操作非易失性存储器所产生的性能测试数据记录在日志文件中。终端通过自定义函数,可以从输入的参数和通过自定义函数操作非易失性存储器所返回的值中采集性能测试数据,自定义函数还可以主动搜集与本次操作非易失性存储器相关的性能测试数据,如本次操作非易失性存储器的进程名和线程名。

进一步地,终端可将日志文件发送至服务器,由服务器根据日志文件中的性能测试数据分析被测应用操作非易失性存储器的性能指标。终端也可以将日志文件导出,如导出至优盘中,通过优盘将日志文件导入个人计算机中,由个人计算机根据日志文件中的性能测试数据分析被测应用操作非易失性存储器的性能指标。终端也可以将日志以可视形式展示,以实现输出日志文件。

上述应用操作非易失性存储器的性能测试数据处理方法,挂钩用于操作非易失性存储器的系统函数,系统函数被被测应用调用时能够回调自定义函数,从而通过自定义函数操作非易失性存储器,并将操作产生的性能测试数据记录在日志文件中,该日志文件中的性能测试数据可用来分析被测应用操作非易失性存储器的性能指标。被测应用在运行过程中,若操作了非易失性存储介质,产生的相应性能测试数据会被记录在日志中,该日志中的性能测试数据可表达被测应用操作非易失性存储器的实际性能,可用于后续分析被测应用操作所述非易失性存储器的性能指标。

在一个实施例中,基于上述实施例中的应用操作非易失性存储器的性能测试数据处理方法,操作系统为安卓操作系统;系统函数为安卓操作系统的blockguardos.java类中的open()函数、close()、read()函数和write()函数中的一种或几种的组合。

具体地,安卓(android)操作系统是一种基于linux的开放源代码的操作系统。安卓操作系统支持包括多种用于操作非易失性存储器的系统函数,如fileinputstream、fileoutputstream、filereader和filewriter等。假若对所有用于操作非易失性存储器的系统函数进行挂钩,工作量比较大,而且容易遗漏。而安卓操作系统中用于操作非易失性存储器的系统函数,最终会调用blockguardos.java类中的open()函数、close()、read()函数和write()函数中的一种或几种的组合。因此直接挂钩blockguardos.java类中的函数,更方便和全面。

其中,open()函数用于打开非易失性存储器中的文件,close()用于关闭非易失性存储器中的文件,read()函数用于从非易失性存储器中打开的文件中读取数据,write()函数用于向非易失性存储器中打开的文件写入数据。

在一个实施例中,步骤s306包括:通过自定义函数采集被测应用操作易失性存储器的线程名并记录在日志文件中。该应用操作非易失性存储器的性能测试数据处理方法还包括:当日志文件中存在主线程名时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果。

具体地,被测应用可包括一个或多个进程,一个进程可包括一个或多个线程,被测应用通过该被测应用的一个进程中的一个线程发起对系统函数的调用,进而触发对自定义函数的调用,并由自定义函数将发起本次对系统函数的调用的线程的线程名记录在日志文件中的一条记录中,还可以将该线程所属进程的进程名记录在该条记录中。

进一步地,服务器在根据日志文件进行分析时,可在日志文件中记录的被测应用在操作所述非易失性存储器时所采用的线程名中查找主线程名,若查找到,则输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果。性能分析结果可以以可视形式输出,也可以输出到指定文件中。其中,被测应用启动时会由操作系统创建一个进程,同时该进程中的一个线程也开始运行,该线程为被测应用的主线程,由该主线程创建的线程为该主线程的子线程。主线程名一般为main。

本实施例中,由于主线程负责的功能较多,若由主线程直接操作非易失性存储器,会影响到主线程的功能。因此,当日志文件中存在主线程名时,定位被测应用存在通过主线程操作非易失性存储器的性能问题,从而引导开发人员克服被测应用通过主线程操作非易失性存储器的性能问题,以提升被测应用的性能。

在一个实施例中,当日志文件中存在主线程名时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果的步骤,具体可以是当日志文件中存在主线程名且该主线程名所属的进程名为前台进程时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果。

其中,前台进程是指可直接响应用户操作的进程。终端具体可判断主线程名所属进程名是否与被测应用安装包的包名一致,若是则可判定该进程名为主进程名。性能分析结果可以以可视形式输出,也可以输出到指定文件中。

本实施例中,前台进程具有响应用户操作的功能,若由前台进程创建的主线程操作非易失性存储器,会影响到前台进程以及主线程的功能,影响用户体验。因此,主线程名且该主线程名所属的进程名为前台进程时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果,从而引导开发人员克服通过前台进程的主线程操作非易失性存储器的性能问题,以提升被测应用的性能。

在一个实施例中,步骤s306包括:通过自定义函数采集被测应用在操作非易失性存储器时所采用的线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数,并将采集的线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数对应记录在日志文件中。

在一个实施例中,该应用操作非易失性存储器的性能测试数据处理方法还包括根据日志文件分析被测应用是否存在读或写效率问题的步骤。参照图4,该根据日志文件分析被测应用是否存在读或写效率问题的步骤具体包括如下步骤:

s402,当日志文件中存在子线程名时,获取与子线程名对应的单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数。

其中,单次文件操作过程是指从打开文件到关闭文件的过程,如打开文件、从打开的文件中读数据以及关闭文件,还比如打开文件、向打开的文件中写数据及关闭文件。单次文件操作可通过相同的文件描述符进行关联和标识。在单次文件操作过程中,可发生多次读或写。单次文件操作过程中读或写的数据总量是指单次文件操作过程中从打开文件到关闭文件所读或写数据的总量,可以用字节数衡量。单次文件操作过程中读或写的次数则是指单次文件操作过程中从打开文件到关闭文件读或写的次数。

s404,将单次文件操作过程中读或写的数据总量除以单次文件操作过程中读或写的次数得到单次读或写数据量均值。

其中,单次读或写数据量均值表示单次文件操作过程中每次读或写的平均数据量,可以反映被测应用的读或写效率。若单次读或写数据量均值越大,表示被测应用读或写效率越高;若单次读或写数据量均值越小,表示被测应用读或写效率越低。

s406,当单次读或写数据量均值小于预设值时,输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果。

其中,预设值是判断单次读或写数据量均值高低,也就是判断被测应用的读或写效率高低的阈值。预设值可以根据需要选取,如可以选择8kb(千字节)。

具体地,当单次读或写数据量均值小于预设值时,表示被测应用读或写效率低,造成了资源浪费,服务器可输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果。当单次读或写数据量均值大于等于预设值时,则表示被测应用读或写效率高,不存在读或写效率问题。

本实施例中,单次读或写数据量均值可以反映被测应用读或写效率的高低,当被测应用读或写效率较低时,输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果,实现了读或写效率问题的精准定位,有利于引导开发人员克服该子线程的读或写效率问题。

在一个实施例中,步骤s306包括:通过自定义函数采集被测应用在单次运行过程中所操作的非易失性存储器中文件的文件名,并将采集的文件名记录在日志文件中。该应用操作非易失性存储器的性能测试数据处理方法还包括:当日志文件中存在重复记录的文件名时,输出表示被测应用存在重复操作文件问题的性能分析结果。

具体地,被测应用从开启到关闭为被测应用的单次运行过程。在被测应用的单次运行过程中,终端通过自定义函数将被测应用所操作文件的文件名记录在日志文件中,日志文件中每条记录记录有所操作文件的文件名。终端在将日志文件发送至服务器后,可由服务器将日志文件中的文件名进行比对,查找是否有多于一个的相同文件名存在于日志文件中,以判断出日志文件中是否存在重复记录的文件名。文件名可通过文件描述符查询得到。

本实施例中,当存在重复记录的文件名时,说明被测应用在其单次运行过程中对相同文件进行了多次读或者写,效率低,输出表示被测应用存在重复操作文件问题的性能分析结果可以引导开发人员克服重复操作文件的问题。

在一个实施例中,该应用操作非易失性存储器的性能测试数据处理方法还包括利用测试用例进行自动化场景测试并控制挂钩开启和取消的步骤。参照图5,该利用测试用例进行自动化场景测试并控制挂钩开启和取消的步骤具体包括如下步骤:

s502,获取测试用例并执行。

其中,测试用例(testcase)是为指定的测试目标而编制的一组测试输入、执行条件以及预期结果,以便测试程序是否满足目标需求的代码。终端可从服务器下载测试用例并执行。终端还可以获取导入到终端中的测试用例并执行。

s504,执行测试用例时,调用挂钩开启接口以执行步骤s302。

s506,在调用挂钩开启接口后执行测试用例中的场景测试代码。

s508,执行场景测试代码结束后,调用挂钩停止接口以取消执行步骤s302。

具体地,测试用例包括场景测试代码,该场景测试代码用于在执行时测试测试被测应用在指定场景下操作非易失性存储器的性能。终端在执行测试用例时,在执行场景测试代码之前,调用挂钩开启接口start()执行步骤s302,以挂钩操作系统提供的用于操作非易失性存储器的系统函数,进而在执行场景测试代码时可以将执行该执行场景测试代码时操作非易失性存储器所产生的性能测试数据记录在日志文件中。终端在执行场景测试代码结束后,再调用挂钩停止接口stop(),以取消对系统函数的挂钩,停止记录日志。场景测试代码比如可以是测试特定功能的代码,或者测试一系列组合功能的代码。

本实施例中,采用测试用例进行自动化测试时,可以通过挂钩开启接口和挂钩停止接口控制挂钩开启和取消,从而准确地在日志文件中记录指定场景下被测应用操作非易失性存储器所产生的性能测试数据,实现对被测应用特定场景下操作非易失性存储器的性能测试。

图6为另一个实施例中应用操作非易失性存储器的性能测试数据处理方法的流程示意图。图7为一个实施例中应用操作非易失性存储器的性能测试数据处理方法所实现的各个功能示意图。图8为一个实施例中通过自定义函数在单次文件操作过程中操作非易失性存储器中文件的示意图。参照图6至图8,该方法具体包括如下步骤:

s602,挂钩安卓操作系统提供的用于操作非易失性存储器的系统函数,使得系统函数由被测应用输入参数并调用时触发对自定义函数的调用。系统函数为安卓操作系统的blockguardos.java类中的open()函数、close()、read()函数和write()函数。

s604,通过自定义函数并根据参数操作非易失性存储器。

s606,通过自定义函数采集被测应用在单次运行过程中所操作的非易失性存储器中文件的文件名、被测应用操作非易失性存储器的线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数,并将采集的文件名、线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数对应记录在日志文件中。

具体地,终端可将被测应用在单次运行过程中所操作的非易失性存储器中文件的文件名、被测应用操作非易失性存储器的线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数记录在日志文件中的同一条记录中,从而将这些数据对应地记录在日志文件中。

s608,当日志文件中存在主线程名时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果。

s610,当日志文件中存在子线程名时,获取与子线程名对应的单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数。

s612,将单次文件操作过程中读或写的数据总量除以单次文件操作过程中读或写的次数得到单次读或写数据量均值。

s614,当单次读或写数据量均值小于预设值时,输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果。

s616,当日志文件中存在重复记录的文件名时,输出表示被测应用存在重复操作文件问题的性能分析结果。

本实施例中,被测应用在运行过程中,若操作了非易失性存储介质,产生的相应性能测试数据会被记录在日志中,该日志中的性能测试数据可表达被测应用操作非易失性存储器的实际性能,可用于后续分析被测应用操作所述非易失性存储器的性能指标。通过分析日志文件,可以分析出被测应用存在通过主线程操作非易失性存储器的性能问题、子线程的读或写效率问题以及重复操作文件的问题。

在一个实施例中,步骤s606中,还可以将单次文件操作耗时以及堆栈信息记录在日志文件中。具体地,终端可通过open()函数对应的自定义函数保存开始操作文件的第一时间戳至日志文件,通过close()函数对应的自定义函数保存结束操作文件的第二时间戳至日志文件,计算第二时间戳与第一时间戳的差值得到单次文件操作耗时。通过单次文件操作耗时也可以找出单次文件操作过程中的效率问题,如当单次文件操作耗时超过预设时长时,输出表示存在文件操作超时的性能问题的性能分析结果。堆栈信息可以描述发生问题时的现场环境,可用于协助开发人员解决所发现的各种问题。

图9为一个实施例中应用操作非易失性存储器的性能测试数据处理装置900的结构框图。参照图9,应用操作非易失性存储器的性能测试数据处理装置900包括:挂钩模块901和自定义函数执行模块902。

挂钩模块901,用于挂钩操作系统提供的用于操作非易失性存储器的系统函数,使得系统函数由被测应用输入参数并调用时触发对自定义函数的调用。

自定义函数执行模块902,用于通过自定义函数并根据参数操作非易失性存储器;通过自定义函数采集操作非易失性存储器所产生的性能测试数据,并将采集的性能测试数据记录在日志文件中;日志文件中的性能测试数据用于据以分析被测应用操作非易失性存储器的性能指标。

上述应用操作非易失性存储器的性能测试数据处理装置,挂钩用于操作非易失性存储器的系统函数,系统函数被被测应用调用时能够回调自定义函数,从而通过自定义函数操作非易失性存储器,并将操作产生的性能测试数据记录在日志文件中,该日志文件中的性能测试数据可用来分析被测应用操作非易失性存储器的性能指标。被测应用在运行过程中,若操作了非易失性存储介质,产生的相应性能测试数据会被记录在日志中,该日志中的性能测试数据可表达被测应用操作非易失性存储器的实际性能,可用于后续分析被测应用操作所述非易失性存储器的性能指标。

在一个实施例中,操作系统为安卓操作系统;系统函数为安卓操作系统的blockguardos.java类中的open()函数、close()、read()函数和write()函数中的一种或几种的组合。

具体地,安卓(英文为android)操作系统是一种基于linux的开放源代码的操作系统。安卓操作系统支持包括多种用于操作非易失性存储器的系统函数,如fileinputstream、fileoutputstream、filereader和filewriter等。假若对所有用于操作非易失性存储器的系统函数进行挂钩,工作量比较大,而且容易遗漏。而安卓操作系统中用于操作非易失性存储器的系统函数,最终会调用blockguardos.java类中的open()函数、close()、read()函数和write()函数中的一种或几种的组合。因此直接挂钩blockguardos.java类中的函数,更方便和全面。

图10为另一个实施例中应用操作非易失性存储器的性能测试数据处理装置900的结构框图。参照图10,应用操作非易失性存储器的性能测试数据处理装置900还包括:性能分析模块903。

在一个实施例中,自定义函数执行模块902还用于通过自定义函数采集被测应用操作易失性存储器的线程名并记录在日志文件中。

性能分析模块903用于当日志文件中存在主线程名时,输出表示被测应用存在通过主线程操作非易失性存储器的性能问题的性能分析结果。

本实施例中,由于主线程负责的功能较多,若由主线程直接操作非易失性存储器,会影响到主线程的功能。因此,当日志文件中存在主线程名时,定位被测应用存在通过主线程操作非易失性存储器的性能问题,从而引导开发人员克服被测应用通过主线程操作非易失性存储器的性能问题,以提升被测应用的性能。

在一个实施例中,自定义函数执行模块902还用于通过自定义函数采集被测应用在操作非易失性存储器时所采用的线程名、单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数,并对应记录在日志文件中。

性能分析模块903用于当日志文件中存在子线程名时,获取与子线程名对应的单次文件操作过程中读或写的数据总量以及单次文件操作过程中读或写的次数;将单次文件操作过程中读或写的数据总量除以单次文件操作过程中读或写的次数得到单次读或写数据量均值;当单次读或写数据量均值小于预设值时,输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果。

本实施例中,单次读或写数据量均值可以反映被测应用读或写效率的高低,当被测应用读或写效率较低时,输出表示子线程名所表示的子线程存在读或写效率问题的性能分析结果,实现了读或写效率问题的精准定位,有利于引导开发人员克服该子线程的读或写效率问题。

在一个实施例中,自定义函数执行模块902还用于通过自定义函数采集被测应用在单次运行过程中所操作的非易失性存储器中文件的文件名,并将采集的文件名记录在日志文件中。

性能分析模块903用于当日志文件中存在重复记录的文件名时,输出表示被测应用存在重复操作文件问题的性能分析结果。

本实施例中,当存在重复记录的文件名时,说明被测应用在其单次运行过程中对相同文件进行了多次读或者写,效率低,输出表示被测应用存在重复操作文件问题的性能分析结果可以引导开发人员克服重复操作文件的问题。

图11为又一个实施例中应用操作非易失性存储器的性能测试数据处理装置900的结构框图。参照图11,应用操作非易失性存储器的性能测试数据处理装置900还包括:自动化测试模块904,用于获取测试用例并执行;执行测试用例时,调用挂钩开启接口以挂钩操作系统提供的用于操作非易失性存储器的系统函数;在调用挂钩开启接口后执行测试用例中的场景测试代码;执行场景测试代码结束后,调用挂钩停止接口以取消挂钩操作系统提供的用于操作非易失性存储器的系统函数。

本实施例中,采用测试用例进行自动化测试时,可以通过挂钩开启接口和挂钩停止接口控制挂钩开启和取消,从而准确地在日志文件中记录指定场景下被测应用操作非易失性存储器所产生的性能测试数据,实现对被测应用特定场景下操作非易失性存储器的性能测试。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储器中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,该存储器可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1