一种计时方法及装置与流程

文档序号:12594858阅读:171来源:国知局
一种计时方法及装置与流程

本申请涉及计时器技术领域,更具体地说,涉及一种计时方法及装置。



背景技术:

业务运行过程中,有时需要对业务运行时长进行统计。现有的计时方法一般包括两种,一种是调用操作系统时间来对业务运行时长进行统计。但是,操作系统时间的精度有限,对于时间精度要求较高的业务无法满足。

为此,系统提供了另一种计时方法,即通过系统自带的计时器进行计时统计。系统计时器的计时精度远远高于操作系统时间。以目标业务运行时间计时过程为例,在目标业务启动时刻获取系统计时器的计时时刻,在目标业务运行结束时刻再次获取系统计时器的计时时刻,并利用在后获取的计时时刻减去在先获取的计时时刻,结果作为目标业务的运行时间。

但是,系统计时器一般存在计时周期,系统计时器从0开始计时到达计时周期值后会重置为0,并从0开始再次计时。计时周期的大小受计时数值的存储限制,以Windows系统计时器为例进行说明,其计时数值是32位的双字类型DWORD存储,可以存储的最大数值为(2^32-1)ms,约为49.71天。也即,Windows系统计时器的计时周期值为49.71天,计时时刻到达该计时周期值后就会重置为0并再次从0开始计时。

仍以目标业务运行时间计时过程为例,如果前后两次获取系统计时器的计时时刻之间,系统计时器发生了重置操作,则会出现计时结果异常的情况。如在先获取的计时时刻为49天,在后获取的计时时刻为1天,相减之后的计时结果为负数。为例避免这种情况的发生,现有技术一般是在系统计时器的计时时刻快要达到计时周期值之前,重启系统。但是,这种处理方式会影响业务的正常运行。



技术实现要素:

有鉴于此,本申请提供了一种计时方法及装置,以解决现有技术为防止系统计时器在计时过程中重置所带来的计时结果异常,采用重启系统的解决方案所导致的减少业务正常运行时间的问题。

为了实现上述目的,现提出的方案如下:

一种计时方法,包括:

在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;

计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

一种计时装置,包括:

第一计时时刻获取单元,用于在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

第二计时时刻获取单元,用于在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

重置次数确定单元,用于确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;

计时结果确定单元,用于计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

本申请实施例提供的计时方法,在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;计算所述第二计时结果减去所述第一计时结果的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。由此可知,本申请中确定了自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,系统计时器的重置次数,并进而在计算第二计时结果减去第一计时结果的差值的基础上,进一步计算所述重置次数与系统计时器的计时周期值的乘积,将所述差值与所述乘积的相加结果确定为计时结果,即时系统计时器在计时过程中重置多次,本申请仍能够确定出正确的计时结果,且无需重启系统,保证了业务的正常运行。

附图说明

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

图1为本申请实施例公开的一种计时方法流程图;

图2为本申请实施例公开的另一种计时方法流程图;

图3为本申请实施例公开的一种目标游戏技能冷却时间统计方法流程图;

图4为本申请实施例公开的又一种计时方法流程图;

图5为本申请实施例公开的一种计时装置结构示意图;

图6为本申请实施例提供的一种服务端硬件结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例公开了一种计时方法,可以应用于服务端或终端,用于对服务端或终端中的业务进行计时统计。其中,业务可以包括多种类型,以游戏业务为例,可以对游戏技能cd时间进行计时统计、对刷怪时间进行计时统计、对游戏活动时间进行计时统计等。

可以理解的是,本申请方案可以适用于计时时长较短以及计时时长较长的各种场景。接下来的实施例中,对本申请实施例的计时方法进行介绍,参见图1所示,该方法包括:

步骤S100、在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

具体地,本申请可以对各种不同业务、操作的耗时时长进行统计。只需要预先设定好计时开始条件以及计时结束条件即可。其中,设定计时开始条件为开始计时时刻,设定计时结束条件为结束计时时刻。

以对目标业务的运行计时统计为例,则设定计时开始条件为目标业务开始启动,设定计时结束条件为目标业务运行结束。

本步骤中,在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻。其中,系统计时器可以相当于一个钟表,本步骤中在确定达到设定计时开始条件时,获取系统计时器当前时刻的计时时刻,作为第一计时时刻。

以目标业务的运行计时统计为例,示例如下:

在确定目标业务开始启动时,获取系统计时器的第一计时时刻:第50ms。也即,目标业务在第50ms时刻开始启动。

步骤S110、在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

具体地,一般性的,达到设定计时开始条件的时刻与达到设定计时结束条件的时刻是两个不同的时刻。本步骤中,在确定达到设定计时结束条件时,再次获取系统计时器的计时时刻,作为第二计时时刻。

可以理解的是,按照时间发展的先后顺序,达到设定计时结束条件时刻应晚于达到设定计时开始条件时刻。但是,由于系统计时器在到达计时周期值后会产生重置,因此第二计时时刻与第一计时时刻间的大小关系并不固定。

仍以目标业务的运行计时统计为例,示例如下:

在确定目标业务运行结束时,获取系统计时器的第二计时时刻:第80ms。也即,目标业务在第80ms时刻运行结束。

可以理解的是,目标业务可能是从第50ms开始运行,并运行30ms后运行结束。除此之外,目标业务还可能是从第50ms开始运行,并在运行1个或多个系统计时器计时周期加30ms后运行结束。

步骤S120、确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;

具体地,具体地,本步骤中确定从达到设定计时开始条件时刻,至达到设定计时结束条件时刻的过程中,系统计时器的重置次数。其中,系统计时器的重置次数即为系统计时器重置为0的次数。

步骤S130、计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

根据上述介绍可知,如果达到设定计时开始条件的时刻,与达到设定计时结束条件的时刻均处于同一个系统计时器计时周期内,则可以确定系统计时器在该过程中重置次数为0,则第二计时刻减去第一计时时刻的差值即为最后的计时结果。但是,如果达到设定计时开始条件的时刻,与达到设定计时结束条件的时刻未处于同一个系统计时器计时周期内,则需要在计算所述第二计时时刻减去所述第一计时时刻的差值的基础上,进一步计算所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

定义第一计时时刻为lastTick,第二计时时刻为curTick,重置次数为n,系统计时器的计时周期值为T,则计时结果delayTick可以通过下式确定:

delayTick=curTick-lastTick+n*T

可以确定,当n为0时,即系统计时器重置次数为0,达到设定计时开始条件的时刻,与达到设定计时结束条件的时刻均处于同一个系统计时器计时周期内,此时,delayTick=curTick-lastTick。

本申请实施例提供的计时方法,在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;计算所述第二计时结果减去所述第一计时结果的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。由此可知,本申请中确定了自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,系统计时器的重置次数,并进而在计算第二计时结果减去第一计时结果的差值的基础上,进一步计算所述重置次数与系统计时器的计时周期值的乘积,将所述差值与所述乘积的相加结果确定为计时结果,即时系统计时器在计时过程中重置多次,本申请仍能够确定出正确的计时结果,且无需重启系统,保证了业务的正常运行。

在本申请的另一个实施例中,以对目标业务的运行计时统计为例进行说明。则设定计时开始条件为目标业务开始启动,设定计时结束条件为目标业务运行结束。本实施例中,假设目标业务的最大运行时长不超过系统计时器的计时周期值,针对此类目标业务,提供了一种计时方法,参见图2,图2为本申请实施例公开的另一种计时方法流程图,如图2所示,该方法包括:

步骤S200、在确定目标业务开始启动时,获取系统计时器的计时时刻,作为第一计时时刻;

具体地,本实施例中设定计时开始条件为目标业务开始启动,其中目标业务为确定的需要进行运行计时统计的业务。

步骤S210、在确定目标业务运行结束时,获取所述系统计时器的计时时刻,作为第二计时时刻;

具体地,本实施例中设定计时结束条件为目标业务运行结束。

步骤S220、判断所述第二计时时刻是否不超过所述第一计时时刻;若是,执行步骤S230,若否,执行步骤S240;

具体地,前述已经介绍,本实施例中目标业务的最大运行时长不超过系统计数器的计时周期值,因此,只会存在两种情况,一种是目标业务启动时刻和目标业务运行结束时刻处于同一计时周期内,系统计时器重置次数为0;另一种情况是目标业务启动时刻和目标业务运行结束时刻处于两个不同计时周期,且该两个计时周期为相邻的两个计时周期,系统计时器重置次数为1。

针对第一种情况,获取的第二计时时刻大于第一计时时刻。针对第二种情况,获取的第二计时时刻不超过第一计时时刻。

本步骤中,通过判断第二计时时刻是否不超过第一计时时刻,可以确定目标业务启动时刻和目标业务运行结束时刻是否处于同一计时周期内,即系统计时器重置次数为0或者为1。

步骤S230、确定所述系统计时器重置次数为1;

具体地,当判断第二计时时刻不超过所述第一计时时刻时,则可以确定目标业务启动时刻和目标业务运行结束时刻分别处于相邻两个不同计时周期内,即系统计时器重置次数为1。

步骤S240、确定所述系统计时器重置次数为0;

具体地,当判断第二计时时刻超过所述第一计时时刻时,则可以确定目标业务启动时刻和目标业务运行结束时刻处于同一计时周期内,即系统计时器重置次数为0。

步骤S250、计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

具体地,当确定的系统计时器重置次数为1时,则计时结果的表达式如下:

delayTick=curTick-lastTick+T

当确定的系统计时器重置次数为0时,则计时结果的表达式如下:

delayTick=curTick-lastTick

本实施例中,针对最大运行时长小于系统计时器的计时周期的目标业务,可以通过上述方案来准确、快速的确定目标业务的运行时长。

以目标业务为游戏技能冷却时间cd为例,由于游戏技能冷却时间一般在几秒或者几分钟以内,远远小于系统计时器的计时周期(系统计时器的计时周期一般为一个月左右,以Windows系统计时器为例,其计时周期为49.7天)。参见图3,图3示例了一种目标游戏技能冷却时间统计方法流程图,如图3所示,该过程可以包括:

步骤S300、在确定目标游戏技能开始释放时,获取系统计时器的计时时刻,作为第一计时时刻;

具体地,本步骤中可以对目标游戏技能的释放状态进行监控,则检测到目标游戏技能开始释放时,获取系统计时器的计时时刻,作为第一计时时刻。

步骤S310、在确定目标游戏技能冷却结束时,获取所述系统计时器的计时时刻,作为第二计时时刻;

具体地,目标游戏技能释放后进入冷却状态。在上一步骤中检测到目标游戏技能释放后,持续对该目标游戏技能的冷却状态进行监控,则检测到目标游戏技能冷却结束时,再次获取系统计时器的计时时刻,作为第二计时时刻。

步骤S320、判断所述第二计时时刻是否不超过所述第一计时时刻;若是,执行步骤S330,若否,执行步骤S340;

步骤S330、确定所述系统计时器重置次数为1;

步骤S340、确定所述系统计时器重置次数为0;

步骤S350、计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为所述目标游戏技能的冷却时间。

通过上述方式,针对冷却时间较短的游戏技能,可以快速确定其实际冷却时间。

当然,上述实施例仅仅以游戏技能冷却时间为例进行说明,其它运行时间不超过系统计时器的计时周期的业务,也可以使用上述方式来确定。

在本申请的另一个实施例中,介绍了确定系统计时器重置次数的另一种实现方式,参见图4,图4为本申请实施例公开的又一种计时方法流程图,如图4所示,该方法包括:

步骤S400、在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

步骤S410、在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

其中,步骤S400-S410的过程与前述实施例中步骤S100-S110的过程相同,具体可以参照前述介绍,此处不再赘述。

步骤S420、获取监控线程对所述系统计时器重置次数的监控结果;

其中,所述监控结果包括所述监控线程在自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所监控到的系统计时器重置为0的次数。

本申请可以设置一监控线程,用于在自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,对系统计时器的重置次数进行监控。在该过程中,每当确定系统计时器发生重置时,将重置次数加1(重置次数初始值为0),得到该过程中系统计时器的总重置次数。

步骤S430、根据所述监控结果确定所述系统计时器的重置次数;

步骤S440、计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

本实施例提供的方案,不仅仅能够适用于最大运行时间不超过系统计时器的计时周期的业务,针对最大运行时间超过系统计时器的计时周期的业务也可以适用,通过对系统计时器的重置次数进行监控,可以确定在自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,系统计时器的重置次数,进而利用重置次数计算得到业务的运行计时结果。

在本申请的又一个实施例中,以系统计时器为Windows系统的计时器为例进行说明,对上述实施例中,S100,确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻的过程,以及S110,在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻的过程进行介绍。

本实施例中可以通过Windows系统提供的GetTickCount函数来获取系统计时器的计时时刻。因此,上述步骤S100的具体实现过程可以包括:

在确定达到设定计时开始条件时,调用GetTickCount函数获取第一计时时刻。

上述步骤S110的具体实现过程可以包括:

在确定达到设定计时结束条件时,再次调用GetTickCount函数获取第二计时时刻。

当然,本实施例中仅仅以Windows系统的计时器为例,介绍了获取系统计时器的计时时刻的具体实现方式。针对其它系统计时器而言,可以采用相应的方法来获取计时时刻。

下面对本申请实施例提供的计时装置进行描述,下文描述的计时装置与上文描述的计时方法可相互对应参照。

参见图5,图5为本申请实施例公开的一种计时装置结构示意图,如图5所示,该装置包括:

第一计时时刻获取单元11,用于在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

第二计时时刻获取单元12,用于在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

重置次数确定单元13,用于确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;

计时结果确定单元14,用于计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

本申请提供的计时装置,确定了自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,系统计时器的重置次数,并进而在计算第二计时结果减去第一计时结果的差值的基础上,进一步计算所述重置次数与系统计时器的计时周期值的乘积,将所述差值与所述乘积的相加结果确定为计时结果,即时系统计时器在计时过程中重置多次,本申请仍能够确定出正确的计时结果,且无需重启系统,保证了业务的正常运行。

可选的,所述设定计时开始条件可以包括目标业务开始启动,所述设定计时结束条件可以包括所述目标业务运行结束,其中所述目标业务为确定的需要进行运行计时统计的业务。

进一步,若所述目标业务的最大运行时长不超过所述系统计时器的计时周期值,则本申请介绍了重置次数确定单元的一种可选结构,所述重置次数确定单元可以包括:

第一重置次数确定子单元,用于判断所述第二计时时刻是否不超过所述第一计时时刻,若是,则确定所述系统计时器重置次数为1,否则,确定所述系统计时器重置次数为0。

可选的,本申请实施例介绍了重置次数确定单元的另一种可选结构,其可以包括:

第二重置次数确定子单元,用于获取监控线程对所述系统计时器重置次数的监控结果,所述监控结果包括所述监控线程在自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所监控到的系统计时器重置为0的次数;

第三重置次数确定子单元,用于根据所述监控结果确定所述系统计时器的重置次数。

可选的,所述系统计时器可以为Windows系统的计时器。在此基础上,所述第一计时时刻获取单元可以包括:

第一函数调用单元,用于在确定达到设定计时开始条件时,调用GetTickCount函数获取第一计时时刻;

所述第二计时时刻获取单元可以包括:

第二函数调用单元,用于在确定达到设定计时结束条件时,再次调用GetTickCount函数获取第二计时时刻。

本申请的计时装置可以应用于服务端,如游戏服务器等,计时装置可以对服务端的业务运行时长进行统计。当然,计时装置还可以应用于用户终端,以对终端内执行的业务进行运行时长统计。以服务端为例,接下来的实施例中,对实现本申请的计时装置的服务端的硬件结构进行介绍,参见图6,图6为本申请实施例提供的一种服务端硬件结构示意图。

如图6所示,服务端可以包括:

处理器1,通信接口2,存储器3,通信总线4,和显示屏5;

其中处理器1、通信接口2、存储器3和显示屏5通过通信总线4完成相互间的通信;

可选的,通信接口2可以为通信模块的接口,如GSM模块的接口;

处理器1,用于执行程序;

存储器3,用于存放程序;

程序可以包括程序代码,所述程序代码包括处理器的操作指令。

处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。

存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

其中,程序具体用于:

在确定达到设定计时开始条件时,获取系统计时器的计时时刻,作为第一计时时刻;

在确定达到设定计时结束条件时,获取所述系统计时器的计时时刻,作为第二计时时刻;

确定自达到设定计时开始条件时刻至达到设定计时结束条件时刻的过程中,所述系统计时器的重置次数;

计算所述第二计时时刻减去所述第一计时时刻的差值,以及所述重置次数与所述系统计时器的计时周期值的乘积,并将所述差值与所述乘积的和值确定为计时结果。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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