一种函数耗时统计方法、装置、存储介质及终端设备与流程

文档序号:17441792发布日期:2019-04-17 04:51阅读:180来源:国知局
一种函数耗时统计方法、装置、存储介质及终端设备与流程

本发明涉及软件开发技术领域,尤其涉及一种函数耗时统计方法、统计装置、计算机可读存储介质及终端设备。



背景技术:

对于应用程序开发者来说,为保证应用程序的质量,优化、完善应用程序的功能,往往需要对应用程序进行性能测试,以基于性能测试结果来完善、优化应用程序,在性能测试中,则往往需要统计应用程序中的函数耗时,即函数的执行时长,以根据执行时长来分析应用程序的质量,从而方便对应用程序进行完善或者优化。

现有技术中,统计函数耗时需要在该函数的执行前后埋点,以在函数运行时获取相关时间信息,从而根据所获取的时间信息来计算函数耗时,即现有技术中统计函数的执行时长时,往往需要入侵各函数的源代码,即需要在各函数源代码中插入相关函数来获取时间信息,而在函数源代码中插入相关函数则会影响应用程序的性能,从而会导致统计的函数耗时并不准确,降低了函数耗时统计的准确率。另外,因需要入侵各函数的源代码,从而使得在无法获取源代码时,则无法进行函数耗时的统计。



技术实现要素:

本发明实施例提供了一种函数耗时统计方法、统计装置、计算机可读存储介质及终端设备,能够在不入侵预设执行函数源代码的情况下进行函数耗时的统计,可提高函数耗时统计的准确率和效率。

本发明实施例的第一方面,提供了一种函数耗时统计方法,包括:

在执行预设执行函数时,跳转至执行预设消息转发函数;

通过所述预设消息转发函数调用第一时间获取函数,获取第一时间;

在所述第一时间获取函数执行完毕后,通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,所述目标执行函数被用于进行所述预设执行函数的还原执行;

在所述目标执行函数执行完毕后,通过所述预设消息转发函数调用第二时间获取函数,获取第二时间;

根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时。

本发明实施例的第二方面,提供了一种函数耗时统计装置,包括:

跳转执行模块,用于在执行预设执行函数时,跳转至执行预设消息转发函数;

第一时间获取模块,用于通过所述预设消息转发函数调用第一时间获取函数,获取第一时间;

还原执行模块,用于在所述第一时间获取函数执行完毕后,通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,所述目标执行函数被用于进行所述预设执行函数的还原执行;

第二时间获取模块,用于在所述目标执行函数执行完毕后,通过所述预设消息转发函数调用第二时间获取函数,获取第二时间;

耗时统计模块,用于根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时。

本发明实施例的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如前述第一方面所述函数耗时统计方法的步骤。

本发明实施例的第四方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:

在执行预设执行函数时,跳转至执行预设消息转发函数;

通过所述预设消息转发函数调用第一时间获取函数,获取第一时间;

在所述第一时间获取函数执行完毕后,通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,所述目标执行函数被用于进行所述预设执行函数的还原执行;

在所述目标执行函数执行完毕后,通过所述预设消息转发函数调用第二时间获取函数,获取第二时间;

根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,在执行预设执行函数时,即可跳转至执行预设消息转发函数,以通过预设消息转发函数进行预设执行函数的还原执行,而在预设执行函数被还原执行之前,可先通过预设消息转发函数调用第一时间获取函数来进行第一时间的获取,即获取预设执行函数被还原执行的开始时间;随后,可通过预设消息转发函数调用与预设执行函数相对应的目标执行函数来进行预设执行函数的还原执行;目标函数执行完毕以后,则可通过预设消息转发函数调用第二时间获取函数来进行第二时间的获取,即预设执行函数还原执行结束的时间,从而可根据第一时间和第二时间得到预设执行函数的函数耗时。本发明实施例中,预设执行函数的函数耗时是通过预设消息转发函数调用相关的时间获取函数来统计得到的,不需要在预设执行函数中进行埋点,不需要入侵预设执行函数的源代码,使得无源代码的情况下也可以进行函数耗时的统计,且因不需要入侵预设执行函数的源代码,从而使得在函数耗时的统计过程中不会影响程序的执行性能,可提高函数耗时的统计准确率和统计效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种函数耗时统计方法的一个实施例流程图;

图2为本发明实施例中一种函数耗时统计方法在一个应用场景下获取预设执行函数的流程示意图;

图3为本发明实施例中一种函数耗时统计方法在一个应用场景下进行预设执行函数的还原执行的流程示意图;

图4为本发明实施例中一种函数耗时统计方法在一个应用场景下进行函数耗时保存的流程示意图;

图5为本发明实施例中一种函数耗时统计装置的一个实施例结构图;

图6为本发明一实施例提供的一种终端设备的示意图。

具体实施方式

本发明实施例提供了一种函数耗时统计方法、统计装置、计算机可读存储介质及终端设备,用于在不入侵预设执行函数源代码的情况下进行函数耗时的统计,提高函数耗时统计的准确率和效率。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例提供了一种函数耗时统计方法,所述函数耗时统计方法,包括:

步骤s101、在执行预设执行函数时,跳转至执行预设消息转发函数;

在软件开发中,为保证软件质量,往往需要对开发完成的软件进行性能测试,以基于性能测试结果来进行软件的完善,如对软件中各执行函数的函数耗时进行统计分析,以找出页面卡顿原因等,其中,执行函数是指代码中各类所对应的函数。在需要对某一指定项目进行性能测试,以统计出该指定项目中各执行函数的函数耗时时,需首先获取该指定项目的所有执行函数,因此,如图2所示,本发明实施例中,在执行预设执行函数之前,可以包括:

步骤s201、获取指定项目的项目路径;

步骤s202、根据所述项目路径和预设类名获取方法,获取所述指定项目中的各类和各类的类名;

步骤s203、分别将各类的类名作为第一参数,利用预设函数获取方法以及所述第一参数,得到各类中的执行函数,并将所述执行函数确定为所述指定项目的预设执行函数。

对于步骤s201至步骤s203,可以理解的是,本发明实施例中,在确定了需要统计函数耗时的指定项目后,可以首先获取所述指定项目的项目路径,如在所述指定项目的代码编译运行过程中通过调用dladdr函数来获取所述指定项目的项目路径path;随后,可将所述项目路径path作为参数传入至预设类名获取方法中,在此,所述预设类名获取方法可以为objc_copyclassnamesforimage方法,即可将所述项目路径path作为参数传入至objc_copyclassnamesforimage方法中,从而可通过调用并执行objc_copyclassnamesforimage来获取到所述指定项目所包含的所有类,其中,所获取到所述指定项目所包含的类包括各类的类名;在获取到各类的类名后,则可以分别将各类的类名作为第一参数,并利用预设函数获取方法和所述第一参数,得到各类中的执行函数,如可以依次将各类的类名分别作为第一参数传入至class_copymethodlist方法中,得到class_copymethodlist方法执行后分别返回的返回结果,其中,所述返回结果即为对应类中的所有函数,而所获取的函数则可以包括函数名、函数类型和该函数所对应的函数指针等。在此,所获取到的函数即为所述指定项目中需要进行函数耗时统计的执行函数,即可将所获取到的函数分别确定为上述所述的预设执行函数。

例如,在将类a的类名a作为第一参数传入至class_copymethodlist方法中,得到class_copymethodlist方法执行后所返回的返回结果为[a,b,c]时,即可确定类a中的函数为a、b以及c,且可分别将函数a、函数b、函数c确定为预设执行函数a、预设执行函数b、预设执行函数c;进一步地,在将类b的类名b作为第一参数至class_copymethodlist方法中,得到class_copymethodlist方法执行后所返回的返回结果为[d,e]时,即可确定类b中的函数为d和e,同样地,可分别将函数d、e确定为预设执行函数d、预设执行函数e。依次将各类的类名分别作为第一参数传入至class_copymethodlist方法中,得到所有类中的函数。

进一步地,如图2所示,本发明实施例中,在确定各所述预设执行函数之后,而在执行预设执行函数之前,还可以包括:

步骤a、获取所述预设执行函数的第一函数指针,并将所述第一函数指针替换为预设函数指针,其中,所述预设函数指针用于触发执行所述预设消息转发函数;

步骤b、创建与所述预设执行函数相对应的目标执行函数,并将所述目标执行函数的第二函数指针设置为对应的预设执行函数的第一函数指针。

对于上述步骤a,可以理解的是,在确定了各所述预设执行函数时,即可获取到各所述预设执行函数所对应的函数指针imp,即上述的第一函数指针imp,其中,函数指针imp为函数具体实现代码块的地址,该地址指向实现函数的方法体,即指向实现函数的代码块。本发明实施例中,在获取到各所述预设执行函数的第一imp后,即可将所述第一imp替换为预设函数指针,如将所有预设执行函数的第一imp均替换为_objc_msgforward,使得在执行各预设执行函数时,因无法找到该预设执行函数所对应的方法体,从而触发消息转发机制,以跳转至执行该预设执行函数所在类中的预设消息转发函数。

对于上述步骤b,需要说明的是,为在不入侵各预设执行函数源代码的情况下,来实现各预设执行函数的函数耗时统计,本发明实施例中,在执行各预设执行函数之前,还可创建与各预设执行函数相对应的目标执行函数,并将所创建的目标执行函数的第二函数指针imp设置为对应的预设执行函数的第一函数指针imp,如可为预设执行函数funa创建对应的目标执行函数pa_funa,同时将pa_funa的imp设置为funa的imp,即将funa的方法体赋予pa_funa,以使得可通过pa_funa的执行来实现funa的功能,也就是说,当pa_funa被执行时即表示funa被执行了,因而可通过统计pa_funa执行时的函数耗时来得到funa的函数耗时,使得在整个统计过程中,不需要入侵funa的源代码,不需要在funa的源代码中插入任何统计代码等,从而可避免其他统计代码的执行来影响funa的执行性能,以影响函数耗时的统计效率和准确率,实现了高效精确地统计函数耗时的目的。

步骤s102、通过所述预设消息转发函数调用第一时间获取函数,获取第一时间;

可以理解的是,因所有预设执行函数的第一imp均已被替换为了预设函数指针_objc_msgforward,因而性能测试过程中,在执行至每一个预设执行函数时,都将会自动触发消息转发机制,以跳转至各预设执行函数所在类中的预设消息转发函数“forwardinvocation:”,从而可通过“forwardinvocation:”来进行各预设执行函数的还原执行,并在还原执行过程中,对各预设执行函数的函数耗时进行统计。进一步地,在通过“forwardinvocation:”进行各预设执行函数的还原执行之前,可首先通过“forwardinvocation:”调用第一时间获取函数来获取各预设执行函数还原执行的开始时间,即上述所述的第一时间,如可以通过“forwardinvocation:”调用cacurrentmediatime()函数来获取当前时间戳,以得到各预设执行函数还原执行的开始时间。

步骤s103、在所述第一时间获取函数执行完毕后,通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,所述目标执行函数被用于进行所述预设执行函数的还原执行;

可以理解的是,在所述第一时间获取函数执行完毕后,即在cacurrentmediatime()函数获取到当前时间戳后,则可通过预设消息转发函数“forwardinvocation:”来进行对应预设执行函数的还原执行,具体地,可通过预设消息转发函数“forwardinvocation:”调用被用于进行该预设执行函数的还原执行的目标执行函数来实现该预设执行函数的还原执行。

可选地,如图3所示,所述通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,可以包括:

步骤s301、在跳转至执行预设消息转发函数时,记录跳转之前所执行的所述预设执行函数以及所对应的第二参数;

步骤s302、确定与所述预设执行函数相对应的目标执行函数,并将所述第二参数传入所述第一目标执行函数中;

步骤s303、通过所述预设消息转发函数调用传入所述第二参数后的目标执行函数。

对于上述步骤s301至步骤s303,可以理解的是,在执行所述预设执行函数时,因所述预设执行函数中的第一imp被替换为了_objc_msgforward,此时将会自动触发消息转发机制,并自动跳转至所述预设执行函数所在类的预设消息转发函数,即自动跳转至所述预设执行函数所在类的“forwardinvocation:”,其中,在跳转至所述预设执行函数所在类的“forwardinvocation:”时,该“forwardinvocation:”将会将触发消息转发机制的预设执行函数记录为所述预设执行函数,并同时记录所述预设执行函数所对应的第二参数,如组装一个与所述预设执行函数相对应的nsinvocation对象,该nsinvocation对象中则包含了所述预设执行函数所对应的第二参数。

进一步地,当该“forwardinvocation:”确定了触发消息转发机制的预设执行函数为所述预设执行函数后,该“forwardinvocation:”即可从预先创建的多个目标执行函数中确定出与所述预设执行函数相对应的目标执行函数,并从所组装的nsinvocation对象中反解出所述预设执行函数所对应的第二参数,然后带着反解出来的第二参数去调用所确定出的目标执行函数,从而实现所述预设执行函数的还原执行,以实现所述预设执行函数的原本功能。

步骤s104、在所述目标执行函数执行完毕后,通过所述预设消息转发函数调用第二时间获取函数,获取第二时间;

可以理解的是,在所述目标执行函数执行完毕后,即在所述预设执行函数被还原执行结束后,可进一步通过预设消息转发函数“forwardinvocation:”调用第二时间获取函数,来获取所述目标执行函数的执行结束时间,即上述所述的第二时间,其中所述第二时间获取函数可与所述第一时间获取函数相同,如可通过“forwardinvocation:”再次调用cacurrentmediatime()函数来获取当前时间戳,以得到所述目标执行函数的执行结束时间。当然,所述第二时间获取函数也可以与所述第一时间获取函数不相同,可以为其他能够获取当前时间的任一函数。

步骤s105、根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时。

本发明实施例中,在得到所述目标执行函数的执行开始时间和执行结束时间,即上述所述的第一时间和第二时间后,可计算所述第二时间与所述第一时间的时间差,而所得到的时间差即为所述目标执行函数执行时的函数耗时,因所述目标执行函数是被用于进行对应的预设执行函数的还原执行,因此所得到的时间差即为所述目标执行函数所对应的预设执行函数的函数耗时,从而统计得到各预设执行函数的函数耗时。

进一步地,本发明实施例中,在根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时之后,还可以包括:

步骤c、获取所述预设执行函数的函数名和所述预设执行函数所在类的类名,并将所述预设执行函数的函数耗时与所述预设执行函数的函数名以及所述预设执行函数所在类的类名进行关联保存。

对于上述步骤c,可以理解的是,在统计得到各预设执行函数的函数耗时后,需要对各函数耗时进行保存,以方便开发者或者测试人员根据函数耗时分析对应项目的性能问题。本发明实施例中,在得到函数耗时后,可以进一步获取该函数耗时所对应的预设执行函数的函数名以及该预设执行函数所在类的类名,并将该函数耗时与该预设执行函数的函数名以及该预设执行函数所在类的类名进行关联保存,从而方面开发者或者测试人员准确、快速地找到各预设执行函数的函数耗时,提高性能分析效率。

需要说明的是,在函数耗时统计中,还可以根据具体需要过滤一些开发者或者测试人员认为无效的数据,以避免数据量太大,影响统计分析速度,进一步提高性能分析效率。

具体地,如图4所示,本发明实施例提供的函数耗时统计方法在一个应用场景下进行函数耗时保存时,可以包括:

步骤s401、根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时;

步骤s402、获取用户预先设置的预设时长阈值;

步骤s403、判断所述预设执行函数的函数耗时是否大于所述预设时长阈值;

步骤s404、若所述预设执行函数的函数耗时大于所述预设时长阈值,则获取所述预设执行函数的函数名和所述预设执行函数所在类的类名;

步骤s405、将所述预设执行函数的函数耗时与所述预设执行函数的函数名以及所述预设执行函数所在类的类名进行关联保存。

可以理解的是,在进行函数耗时的保存时,开发者或者测试人员可根据具体需要预先设置对应的时长阈值,作为所述预设时长阈值,以过滤一些其不想要的统计结果,减少统计分析的数据量,方便开发者或者测试人员快速找到影响软件性能的原因。

上述步骤s401与上述步骤s105相似,原理基本相同,为简明起见,在此不再赘述。

对于上述步骤s402,可以理解的是,开发者或者测试人员在进行性能测分析时,可根据具体需要预先设置预设时长阈值,如可将所述预设时长阈值设置为100毫秒,以找出函数耗时超过100毫秒的预设执行函数。

对于上述步骤s403至步骤s405,可以理解的是,在根据第一时间和第二时间,统计得到某一预设执行函数的函数耗时后,可先判断该函数耗时是否大于所述预设时长阈值,如判断该函数耗时是否大于100毫秒,若该函数耗时大于预设时长阈值100毫秒的话,则说明该预设执行函数是开发者或者测试人员进行性能分析所需的函数,此时,可进一步获取该预设执行函数的函数名和该预设执行函数所在类的类名,并可将该函数耗时与该预设执行函数的函数名以及该预设执行函数所在类的类名进行关联保存,从而方便开发者或者测试人员根据所保存的函数耗时对相应的预设执行函数进行性能分析。

本发明实施例中,在执行预设执行函数时,即可跳转至执行预设消息转发函数,以通过预设消息转发函数进行预设执行函数的还原执行,而在预设执行函数被还原执行之前,可先通过预设消息转发函数调用第一时间获取函数来进行第一时间的获取,即获取预设执行函数被还原执行的开始时间;随后,可通过预设消息转发函数调用与预设执行函数相对应的目标执行函数来进行预设执行函数的还原执行;目标函数执行完毕以后,则可通过预设消息转发函数调用第二时间获取函数来进行第二时间的获取,即预设执行函数还原执行结束的时间,从而可根据第一时间和第二时间得到预设执行函数的函数耗时。本发明实施例中,预设执行函数的函数耗时是通过预设消息转发函数调用相关的时间获取函数来统计得到的,不需要在预设执行函数中进行埋点,不需要入侵预设执行函数的源代码,使得无源代码的情况下也可以进行函数耗时的统计,且因不需要入侵预设执行函数的源代码,从而使得在函数耗时的统计过程中不会影响程序的执行性能,可提高函数耗时的统计准确率和统计效率。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

上面主要描述了一种函数耗时统计方法,下面将对一种函数耗时统计装置进行详细描述。

图5示出了本发明实施例中一种函数耗时统计装置的一个实施例结构图。如图5所示,所述函数耗时统计装置,包括:

跳转执行模块501,用于在执行预设执行函数时,跳转至执行预设消息转发函数;

第一时间获取模块502,用于通过所述预设消息转发函数调用第一时间获取函数,获取第一时间;

还原执行模块503,用于在所述第一时间获取函数执行完毕后,通过所述预设消息转发函数调用与所述预设执行函数相对应的目标执行函数,所述目标执行函数被用于进行所述预设执行函数的还原执行;

第二时间获取模块504,用于在所述目标执行函数执行完毕后,通过所述预设消息转发函数调用第二时间获取函数,获取第二时间;

耗时统计模块505,用于根据所述第一时间和所述第二时间,统计得到所述预设执行函数的函数耗时。

进一步地,所述函数耗时统计装置,可以包括:

路径获取模块,用于获取指定项目的项目路径;

类名获取模块,用于根据所述项目路径和预设类名获取方法,获取所述指定项目中的各类和各类的类名;

函数获取模块,用于分别将各类的类名作为第一参数,利用预设函数获取方法以及所述第一参数,得到各类中的执行函数,并将所述执行函数确定为所述指定项目的预设执行函数。

优选地,所述函数耗时统计装置,还可以包括:

指针替换模块,用于获取所述预设执行函数的第一函数指针,并将所述第一函数指针替换为预设函数指针,其中,所述预设函数指针用于触发执行所述预设消息转发函数;

目标执行函数创建模块,用于创建与所述预设执行函数相对应的目标执行函数,并将所述目标执行函数的第二函数指针设置为对应的预设执行函数的第一函数指针。

可选地,所述还原执行模块503,可以包括:

函数记录单元,用于在跳转至执行预设消息转发函数时,记录跳转之前所执行的所述预设执行函数以及所对应的第二参数;

目标执行函数确定单元,用于确定与所述预设执行函数相对应的目标执行函数,并将所述第二参数传入所述目标执行函数中;

还原执行单元,用于通过所述预设消息转发函数调用传入所述第二参数后的目标执行函数。

进一步地,所述函数耗时统计装置,还可以包括:

函数耗时保存模块,用于获取所述预设执行函数的函数名和所述预设执行函数所在类的类名,并将所述预设执行函数的函数耗时与所述预设执行函数的函数名以及所述预设执行函数所在类的类名进行关联保存。

优选地,所述函数耗时保存模块,包括:

时长阈值获取单元,用于获取用户预先设置的预设时长阈值;

函数耗时判断单元,用于判断所述预设执行函数的函数耗时是否大于所述预设时长阈值;

函数名类名获取单元,用于若所述预设执行函数的函数耗时大于所述预设时长阈值,则获取所述预设执行函数的函数名和所述预设执行函数所在类的类名;

函数耗时保存单元,用于将所述预设执行函数的函数耗时与所述预设执行函数的函数名以及所述预设执行函数所在类的类名进行关联保存。

图6是本发明一实施例提供的一种终端设备的示意图。如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机可读指令62,例如函数耗时统计程序。所述处理器60执行所述计算机可读指令62时实现上述各个函数耗时统计方法实施例中的步骤,例如图1所示的步骤s101至步骤s105。或者,所述处理器60执行所述计算机可读指令62时实现上述各装置实施例中各模块/单元的功能,例如图5所示的模块501至模块505的功能。

示例性的,所述计算机可读指令62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令62在所述终端设备6中的执行过程。

所述终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的示例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所述处理器60可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机可读指令以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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