一种运算公式处理方法和装置与流程

文档序号:13813051阅读:164来源:国知局

本发明涉及计算机技术领域,特别涉及一种运算公式处理方法和装置。



背景技术:

全面预算中往往会存在数据需要进行运算处理,因此需要定义运算公式来计算出需要的数据结果。

在全面预算过程中,通常需要逐个处理运算公式以获取最后的数据结果,例如,计算公司下半年支出预算时,首先需要确定出下半年每个月分别对应的支出预算公式,并对确定出的支出预算公式进行逐个处理,以确定各月份的支出预算,然后,再确定相应的汇总公式,对该汇总公式进行处理,从而求得下半年总支出预算。

随着科学技术的进步,公司获取到的数据量迅速增长,在数据运算过程中,需要处理的运算公式的数量也日益增多,从而增加了上述方法处理运算公式的时间,进而降低了处理运算公式的效率。



技术实现要素:

本发明实施例提供了一种运算公式处理方法和装置,提高了处理运算公式的效率。

第一方面,本发明实施例提供了一种运算公式处理方法,设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序;还包括:

获取至少两个待处理运算公式;

根据所述对应关系,确定各个所述待处理运算公式对应的所述运算级别;

根据各个所述待处理运算公式分别对应的运算级别,将所述至少两个待处理运算公式划分成至少一个公式组,其中,所述至少一个公式组与确定出的各个所述运算级别一一对应,且每一个所述公式组对应的运算级别与该公式组包括的任意一个所述待处理公式对应的所述运算级别相同;

根据所述运算顺序,从所述至少一个公式组中依次确定待处理公式组,并同时处理确定出的所述待处理公式组中的各个所述待处理运算公式。

优选地,所述设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序,包括:

将每一个所述运算公式作为当前运算公式,均执行a1至a3:

a1,判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,其中,所述至少一个关联公式与所述当前运算公式存在勾稽关系;如果是,则执行a2,否则,执行a3;

a2,根据所述勾稽关系,确定所述至少一个关联公式与所述当前运算公式之间的排列顺序;

a3,从所述至少两个运算级别中,确定默认运算级别,并为所述当前运算公式设置所述默认运算级别;

根据确定出的各个所述排列顺序,为每一个存在所述关联公式的所述运算公式,以及该运算公式对应的所述至少一个关联公式分别设置所述运算级别,以使设置的各个所述运算级别之间的所述运算顺序与所述排列顺序相同。

优选地,进一步包括:创建自变量堆栈和因变量堆栈,并将所述至少两个运算公式的因变量和自变量分别填入所述因变量堆栈和所述自变量堆栈;

则,所述判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,包括:

b1,检测在所述自变量堆栈中是否存在所述当前运算公式的因变量,如果是,则执行b3;否则,执行b2;

b2,检测在所述因变量堆栈中是否存在所述当前运算公式的自变量,如果是,则执行b3;否则,执行b4;

b3,根据所述自变量堆栈中的所述当前运算公式的因变量,和/或所述因变量堆栈中的所述当前运算公式的自变量,确定与所述当前运算公式对应的所述至少一个关联公式;

b4,确定不存在与所述当前运算公式对应的所述关联公式。

优选地,所述a2,包括:

当所述关联公式的自变量包括所述当前运算公式的因变量时,将所述当前运算公式排列在所述关联公式之前;

当所述关联公式的因变量为所述当前运算公式的自变量时,将所述当前运算公式排列在所述关联公式之后;

根据所述当前运算公式与所述关联公式的前后顺序,确定所述排列顺序。

优选地,所述根据所述运算顺序,从所述至少一个公式组中依次确定待处理公式组,并同时处理所述待处理公式组中的各个所述待处理运算公式,包括:

将所述运算顺序中排在最前的所述公式组确定为所述待处理公式组,执行c1到c4,直至各个所述公式组均被确定为所述待处理公式组;

c1,为所述待处理公式组中的每一个所述待处理运算公式配置预设线程;

c2,确定所述待处理运算公式所处的当前内存的空闲容量;

c3,根据确定出的所述空闲容量,确定所述当前内存能够同时执行所述预设线程的总数量n,并同时执行n个所述预设线程;

c4,判断是否存在至少一个未执行的所述预设线程,如果是,执行c2;否则,注销为所述待处理公式组中的各个所述待处理运算公式配置的预设线程,并根据所述运算顺序,将所述至少一个公式组中位于所述待处理公式组下一顺序的所述公式组作为所述待处理公式组,并执行c1。

第二方面,本发明实施例提供了一种运算公式处理装置,其特征在于,包括:设置模块、获取模块、分组模块和公式处理模块;

所述设置模块,用于设置至少一个运算公式与至少一个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序;

所述获取模块,用于获取至少两个待处理运算公式;

所述分组模块,用于根据所述设置模块确定出的所述对应关系,确定所述获取模块获取到的所述各个所述待处理运算公式对应的所述运算级别;根据各个所述待处理运算公式分别对应的运算级别,将所述至少两个待处理运算公式划分成至少一个公式组,其中,所述至少一个公式组与确定出的各个所述运算级别一一对应,且每一个所述公式组对应的运算级别与该公式组包括的任意一个所述待处理公式对应的所述运算级别相同;

所述公式处理模块,用于根据所述设置模块确定的运算顺序,从所述分组模块确定出的所述至少一个公式组中依次确定待处理公式组,并同时处理所述待处理公式组中的各个所述待处理运算公式。

优选地,所述设置模块,用于将每一个所述运算公式作为当前运算公式,均执行a1至a3:

a1,判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,其中,所述至少一个关联公式与所述当前运算公式存在勾稽关系;如果是,则执行a2,否则,执行a3;

a2,根据所述勾稽关系,确定所述至少一个关联公式与所述当前运算公式之间的排列顺序;

a3,从所述至少两个运算级别中,确定默认运算级别,并为所述当前运算公式设置所述默认运算级别;

根据确定出的各个所述排列顺序,为每一个存在所述关联公式的所述运算公式,以及该运算公式对应的所述至少一个关联公式分别设置所述运算级别,以使设置的各个所述运算级别之间的所述运算顺序与所述排列顺序相同。

优选地,进一步包括:公式填写模块;

所述公式填写模块,用于创建自变量堆栈和因变量堆栈,并将所述至少两个运算公式的因变量和自变量分别填入所述因变量堆栈和所述自变量堆栈;

所述设置模块,包括:第一检测单元、第二检测单元和公式确定单元;

所述第一检测单元,用于检测在所述自变量堆栈中是否存在所述当前运算公式的因变量,如果是,触发所述公式确定单元;否则,触发所述第二检测单元;

所述第二检测单元,用于检测在所述因变量堆栈中是否存在所述当前运算公式的自变量,如果是,触发所述公式确定单元;否则,确定不存在与所述当前运算公式对应的所述关联公式;

所述公式确定单元,用于根据所述自变量堆栈中的所述当前运算公式的因变量,和/或所述因变量堆栈中的所述当前运算公式的自变量,确定与所述当前运算公式对应的所述至少一个关联公式。

优选地,所述设置模块,进一步包括:排序单元;

所述排序单元,用于当所述关联公式的自变量包括所述当前运算公式的因变量时,将所述当前运算公式排列在所述关联公式之前;当所述关联公式的因变量为所述当前运算公式的自变量时,将所述当前运算公式排列在所述关联公式之后;根据所述当前运算公式与所述关联公式的前后顺序,确定所述排列顺序。

优选地,所述公式处理模块,用于将所述运算顺序中排在最前的所述公式组确定为所述待处理公式组,执行c1到c4,直至各个所述公式组均被确定为所述待处理公式组;

c1,为所述待处理公式组中的每一个所述待处理运算公式配置预设线程;

c2,确定所述待处理运算公式所处的当前内存的空闲容量;

c3,根据确定出的所述空闲容量,确定所述当前内存能够同时执行所述预设线程的总数量n,并同时执行n个所述预设线程;

c4,判断是否存在至少一个未执行的所述预设线程,如果是,执行c2;否则,注销为所述待处理公式组中的各个所述待处理运算公式配置的预设线程,并根据所述运算顺序,将所述至少一个公式组中位于所述待处理公式组下一顺序的所述公式组作为所述待处理公式组,并执行c1。

本发明实施例提供了一种运算公式处理方法和装置,预先设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个运算级别之间的运算顺序,从而确定各个运算公式的处理顺序。在获取到待处理运算公式之后,根据设置的对应关系,确定各个待处理运算公式对应的运算级别,方便后续对各个待处理运算公式分组;再将处在同一级别的待处理公式划分到同一个公式组,以得到至少一个公式组,由于运算级别与运算顺序相对应,因此同一个公式组中,各个待处理运算公式对应的处理顺序也是相同的;根据设置的运算顺序,从至少一个公式组中,依次确定出待处理公式组,并同时处理待处理公式组中具有相同处理顺序的各个待处理运算公式。由此可见,本发明实施例,通过设置各运算公式与运算级别的对应关系,实现对待处理运算公式进行分组;根据运算级别之间的运算顺序,确定各个待处理运算公式的处理顺序,再按照运算顺序,依次对各个待处理运算公式进行并行处理,从而减少了运算公式的处理量,进而提高了处理运算公式的效率。

附图说明

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

图1是本发明一个实施例提供的一种运算公式处理方法的流程图;

图2是本发明一个实施例提供的另一种运算公式处理方法的流程图;

图3是本发明一个实施例提供的一种运算公式处理装置的结构示意图;

图4是本发明一个实施例提供的另一种运算公式处理装置的结构示意图;

图5是本发明一个实施例提供的又一种运算公式处理装置的结构示意图。

具体实施方式

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

如图1所示,本发明实施例提供了一种运算公式处理方法,该方法可以包括以下步骤:

步骤101,设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序。

步骤102,获取至少两个待处理运算公式。

步骤103,根据所述对应关系,确定各个所述待处理运算公式对应的所述运算级别。

步骤104,根据各个所述待处理运算公式分别对应的运算级别,将所述至少两个待处理运算公式划分成至少一个公式组,其中,所述至少一个公式组与确定出的各个所述运算级别一一对应,且每一个所述公式组对应的运算级别与该公式组包括的任意一个所述待处理公式对应的所述运算级别相同。

步骤105,根据所述运算顺序,从所述至少一个公式组中依次确定待处理公式组,并同时处理确定出的所述待处理公式组中的各个所述待处理运算公式。

本发明实施例提供了一种运算公式处理方法,预先设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个运算级别之间的运算顺序,从而确定各个运算公式的处理顺序。在获取到待处理运算公式之后,根据设置的对应关系,确定各个待处理运算公式对应的运算级别,方便后续对各个待处理运算公式分组;再将处在同一级别的待处理公式划分到同一个公式组,以得到至少一个公式组,由于运算级别与运算顺序相对应,因此同一个公式组中,各个待处理运算公式对应的处理顺序也是相同的;根据设置的运算顺序,从至少一个公式组中,依次确定出待处理公式组,并同时处理待处理公式组中具有相同处理顺序的各个待处理运算公式。由此可见,本发明实施例,通过设置各运算公式与运算级别的对应关系,实现对待处理运算公式进行分组;根据运算级别之间的运算顺序,确定各个待处理运算公式的处理顺序,再按照运算顺序,依次对各个待处理运算公式进行并行处理,从而减少了运算公式的处理量,进而提高了处理运算公式的效率。

为了确定各运算公式与各运算级别的对应关系,以及各运算公式的处理顺序,在本发明的一个实施例中,所述设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序,包括:

将每一个所述运算公式作为当前运算公式,均执行a1至a3:

a1,判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,其中,所述至少一个关联公式与所述当前运算公式存在勾稽关系;如果是,则执行a2,否则,执行a3;

a2,根据所述勾稽关系,确定所述至少一个关联公式与所述当前运算公式之间的排列顺序;

a3,从所述至少两个运算级别中,确定默认运算级别,并为所述当前运算公式设置所述默认运算级别;

根据确定出的各个所述排列顺序,为每一个存在所述关联公式的所述运算公式,以及该运算公式对应的所述至少一个关联公式分别设置所述运算级别,以使设置的各个所述运算级别之间的所述运算顺序与所述排列顺序相同。

在本发明实施例中,勾稽关系是指两个运算公式在计算过程中存在递推关系,例如,第一公式a=a1+a2和第二公式b=a+c,在运算时需要先得到第一公式的“a”,才能运算第二公式得到“b”,因此,第一公式与第二公式存在勾稽关系,第一公式与第二公式互为关联公式。

通过各运算公式间的勾稽关系来确定各运算公式间的排列顺序。上述例子中,由于只能先处理第一公式再处理第二公式,所以第一公式的排列顺序要先于第二公式。因此设置运算级别时,第一公式的运算级别对应的运算顺序要先于第二公式。例如,设置有第一、第二两个运算级别,其中,第一运算级别先于第二运算级别进行运算,那么第一公式设置为第一运算级别,第二公式设置为第二运算级别,以使运算顺序与排列顺序相同。如果存在第三公式d=e+f,由于第三公式与第一公式、第二公式不存在勾稽关系,即第三公式不存在关联公式,因此第三公式的运算级别为预先设置的默认运算级别,例如,第一运算级别为默认运算级别,那么第三公式以及其他不存在关联公式的运算公式均设置为第一级别。

为了能够确定出当前运算公式对应的各个关联公式,在本发明的一个实施例中,进一步包括:创建自变量堆栈和因变量堆栈,并将所述至少两个运算公式的因变量和自变量分别填入所述因变量堆栈和所述自变量堆栈;

则,所述判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,包括:

b1,检测在所述自变量堆栈中是否存在所述当前运算公式的因变量,如果是,则执行b3;否则,执行b2;

b2,检测在所述因变量堆栈中是否存在所述当前运算公式的自变量,如果是,则执行b3;否则,执行b4;

b3,根据所述自变量堆栈中的所述当前运算公式的因变量,和/或所述因变量堆栈中的所述当前运算公式的自变量,确定与所述当前运算公式对应的所述至少一个关联公式;

b4,确定不存在与所述当前运算公式对应的所述关联公式。

一般地,各个运算公式均可以定义为如下形式:

y=k1x1+k2x2+…+knxn

其中,y为运算公式的因变量,xn为运算公式的自变量,kn为各个自变量对应的系数。对于当前运算公式,将y放入因变量堆栈,将x1、x2、…、xn放入自变量堆栈,之后在自变量堆栈中查找是否存在y,以及在因变量堆栈查找是否存在x1、x2、…、xn中的任意一个或多个;当自变量堆栈中查找不存在y且因变量堆栈查找不存在x1、x2、…、xn中任意一个时,当前运算公式不存在对应的关联公式;反之,当前运算公式存在对应的关联公式,并根据自变量堆栈中的y以及因变量堆栈中的在x1、x2、…、xn中的任意一个或多个确定出当前运算公式对应的至少一个关联公式,通过上方法可以保证不会遗漏当前运算公式对应的任意一个关联公式。

例如,自变量堆栈和因变量堆栈已存入公式a=a1+a2、公式c=c1+c2、公式b=a+c以及公式d=b+e的自变量和因变量,此时,自变量堆栈包括a、a1、a2、c、c1、c2、b和e;因变量堆栈包括:a、b、c和d。当前公式为b=a+c,检测出因变量堆栈存在当前公式的自变量a、c,自变量堆栈存在当前公式的因变量b,因此,a=a1+a2、公式c=c1+c2以及公式d=b+e均为当前公式的关联公式。

各运算级别之间的运算顺序与根据勾稽关系得到的排列顺序相同,因此,任意两个存在勾稽关系的运算公式不会处于同一级别,以保证同时处理同一级别对应的的各个运算公式时不会出现运行错误。例如,公式a=a1+a2和公式b=a+c,只能先处理公式a=a1+a2,后处理公式b=a+c,如果同时处理会引发运行错误。

为了进一步说明至少一个关联公式与当前运算公式之间的排列顺序是如何确定的,在本发明的一个实施例中,所述a2,包括:

当所述关联公式的自变量包括所述当前运算公式的因变量时,将所述当前运算公式排列在所述关联公式之前;

当所述关联公式的因变量为所述当前运算公式的自变量时,将所述当前运算公式排列在所述关联公式之后;

根据所述当前运算公式与所述关联公式的前后顺序,确定所述排列顺序。

当关联公式的自变量包括当前运算公式的因变量时,说明只有计算出当前公式,才能够计算关联公式,例如关联公式为e=b+d,当前公式为b=a+c,那么,想计算出e,就必须先计算b和d,因此,当前运算公式排列在关联公式之前;同理当关联公式的因变量为当前运算公式的自变量时,说明只有计算出关联公式,才能够计算当前公式,因此当前运算公式排列在关联公式之后,最后根据当前运算公式与关联公式的前后顺序,确定排列顺序。

为了能够有效利用待处理运算公式所处的当前内存,在本发明的一个实施例中,所述根据所述运算顺序,从所述至少一个公式组中依次确定待处理公式组,并同时处理所述待处理公式组中的各个所述待处理运算公式,包括:

将所述运算顺序中排在最前的所述公式组确定为所述待处理公式组,执行c1到c4,直至各个所述公式组均被确定为所述待处理公式组;

c1,为所述待处理公式组中的每一个所述待处理运算公式配置预设线程;

c2,确定所述待处理运算公式所处的当前内存的空闲容量;

c3,根据确定出的所述空闲容量,确定所述当前内存能够同时执行所述预设线程的总数量n,并同时执行n个所述预设线程;

c4,判断是否存在至少一个未执行的所述预设线程,如果是,执行c2;否则,注销为所述待处理公式组中的各个所述待处理运算公式配置的预设线程,并根据所述运算顺序,将所述至少一个公式组中位于所述待处理公式组下一顺序的所述公式组作为所述待处理公式组,并执行c1。

先将每一个待处理运算公式分配到预设线程,以方便进行并行处理;再确定待处理运算公式所处的当前内存的空闲容量,根据当前内存的空闲容量,确定同时执行的线程数量,上述方法能够保证执行线程时,不会影响当前内存的正常运行,同时也能最大限度的利用当前内存的空闲容量处理待处理运算公式。例如,当前内存的空闲容量能够同时处理10个线程,而预设线程共有20个,那么一次处理10个预设线程,分两次处理完,既不会使得当前内存超负荷运行,又能以最快的速度执行各个预设线程。在每一个待处理公式组中的各个待处理运算公式均被处理后,将配置的预设线程注销,以增加当前内存的空闲容量,以便处理下一个待处理公式组中的各个待处理运算公式,从而提高了运算公式的处理效率。依次对每一个待处理公式组执行上述步骤,直至各个公式组均被处理。

下面以处理计算下半年支出和收入的各个运算公式为例,如图2所示,说明本发明实施例提供的运算公式处理方法,包括以下步骤:

步骤201,将用于计算下半年支出和收入的各个运算公式的因变量和自变量分别填入预设的因变量堆栈和自变量堆栈中。

在本发明实施例中,下半年支出和收入的各个运算公式包括:6个下半年各个月份的支出公式,1个下半年支出的求和公式,6个下半年各个月份的收入公式,1个下半年收入的求和公式,共计14个运算公式。

每一个运算公式都能定义为如下形式:

y=k1x1+k2x2+…+knxn

其中,y为运算公式的因变量,xn为运算公式的自变量,kn为各个自变量对应的系数。例如,下半年支出=7月份支出+8月份支出+…+12月份支出。

依次将14个运算公式作为当前运算公式均执行步骤202至步骤206,直至每个运算公式均被确定排列顺序。

步骤202,检测在自变量堆栈中是否存在当前运算公式的因变量,如果是,则执行步骤204;否则,执行步骤203。

步骤203,检测在因变量堆栈中是否存在当前运算公式的自变量,如果是,则执行步骤204;否则,执行步骤208;

步骤204,根据自变量堆栈中的当前运算公式的因变量,和/或因变量堆栈中的当前运算公式的自变量,确定与当前运算公式对应的至少一个关联公式。

在本发明实施例中,当一个运算公式的自变量包括另一个运算公式的因变量时,两个公式互为关联公式,步骤202至步骤204根据14个运算公式间的勾稽关系确定各个公式对应的关联公式,以下半年支出求和公式为例,现半年下半年支出=7月份支出+8月份支出+…+12月份支出,而各月份支出为各个月份支出公式的因变量,因此,各个月份的支出公式为下半年支出求和公式是的关联公式。

步骤205,根据勾稽关系,确定关联公式与当前运算公式之间的前后顺序。

在本发明的一个实施例中,当关联公式的自变量包括当前运算公式的因变量时,将当前运算公式排列在关联公式之前;当关联公式的因变量为当前运算公式的自变量时,将当前运算公式排列在关联公式之后,例如7月份的支出运算公式在下半年运算支出公式之前。

步骤206,根据确定出的前后顺序,分别确定出至少一个关联公式与当前运算公式之间排列顺序。

在本发明的一个实施例中,当关联公式的数量为1时,关联公式与当前运算公式之间的先后顺序就是指关联公式与当前运算公式的排列顺序,关联公式的数量大于1时,根据各个关联公式与当前运算公式之间的先后顺序确定出总体的排列顺序,以下半年支出的求和公式为例,各个月份的支出运算公式为下半年支出的求和公式的关联公式,由于各个月份的支出运算公式不存在勾稽关系,因此,各个月份的支出运算公式对应先后顺序相同,所以排列顺序为各个月份的支出运算公式、下半年支出的求和公式;如果还存在全年支出的求和公式,则全年支出的求和公式也是下半年支出的求和公式的关联公式,那么排列顺序为各个月份的支出运算公式、下半年支出的求和公式、全年支出的求和公式。

步骤207,根据确定出的各个排列顺序,设置各个月份的支出运算公式和各个月份的收入运算公式的运算级别为1,下半年支出的求和公式和下半年收入的求和公式的运算级别为2,并执行步骤210。

在本发明实施例中,以阿拉伯数字代表运算级别如1、2…,且运算级别越小,运算顺序越靠前。经上述实施例中的各步骤,14个运算公式存在两种排列顺序,其中,第一种排列顺序为各个月份的支出运算公式、下半年支出的求和公式;第二种排列顺序为各个月份的收入运算公式、下半年收入的求和公式。对于第一种顺序,由于设置的运算级别之间的运算顺序与上述排列顺序相同,各个月份的支出运算公式的运算级别为1,下半年支出的求和公式的运算级别为2。由于各个月份的支出运算公式以及下半年支出的求和公式与各个月份的收入运算公式均不存在勾稽关系,设定各个月份的收入运算公式的运算级别为1,使得能够同时处理各个月份的支出运算公式和收入运算公式,以提高运算公式的处理效率。根据各个月份的收入运算公式与下半年收入的求和公式的勾稽关系,设置下半年收入的求和公式的运算级别为2。

步骤208,确定当前公式不存在关联公式。

步骤209,为当前公式设置默认运算级别。

在本发明实施例中,由于默认级别对应的运算公式与各个公式均不存在勾稽关系,所以默认级别为1,以避免引发程序错误。例如,如果在上述14个运算公式中添加下半年产量的运算公式,那么该运算公式不存在关联公式,因此其级别设置为1。

步骤210,获取上述14个运算公式为待处理公式。

步骤211,确定上述14个待处理运算公式对应的运算级别;

步骤212,根据各个待处理运算公式分别对应的运算级别,将运算级别相同的待处理运算公式划分到同一个公式组,得到两个公式组。

在本发明实施例中,各月份的支出运算公式和各月份的收入运算公式均为1级,将这12个公式放入同一个公式组;下半年支出的求和公式和下半年收入的求和公式运算级别为2,将这两个运算公式放入同一个公式组。

步骤213,从两个公式组中,将运算顺序中排在最前的公式组确定为待处理公式组。

在本发明实施例中,根据运算顺序,先计算各月份的支出运算公式和各月份的收入运算公式,因此各月份的支出运算公式和各月份的收入运算公式所在的公式组先被确定为待处理公式组,再确定下半年支出的求和公式和下半年收入的求和公式运算级别所在的公式组为待处理公式组。

步骤214,为待处理公式组中的每一个待处理运算公式配置预设线程。

在本发明实施例中,预设线程包括:待处理运算公式所处的当前内存已存在的空闲线程,以及根据待处理运算公式数量新创建的线程。

步骤215,确定待处理运算公式所处的当前内存的空闲容量。

步骤216,根据确定出的空闲容量,确定当前内存能够同时执行预设线程的总数量n,并同时执行n个预设线程。

步骤217,判断是否存在至少一个未执行的预设线程,如果是,执行步骤215;否则,执行步骤218。

步骤218,注销为待处理公式组中的各个待处理运算公式配置的预设线程。

在本发明实施例中,步骤215到步骤217实现最大程度地利用当前内存的空闲容量处理待处理运算公式,例如,第一公式组中存在12个待处理公式,如果确定同时执行预设线程的总数量n为0,则说明当前内存运行繁忙无法执行预设线程,此时各预设线程需要加入等待队列;如果确定同时执行预设线程的总数量n大于0小于12,则先同时执行n个预设线程,再对剩余的预设线程进行并行操作;如果确定同时执行预设线程的总数量n大于12,则同时处理12个预设线程。上述方法既能保证处理运算公式的速度,又能保证内存的正常运行。每次执行完一个待处理公式组中的各个待处理公式后,注销该待处理公式组中的各个待处理公式使用的预设线程,以保证当前内存的空闲容量。

步骤219,判断是否存在未被确定为待处理公式组的公式组,如果是,执行步骤213;否则,结束当前流程。

本发明实施例提供的运算公式处理方法,通过为各个运算公式设置运算级别,以实现对同级别的运算公式进行并行处理,从而减少了运算公式的处理次数。在当前内存的空闲容量足够大的情况下,本发明实施例提供的运算公式处理方法只需要两次并行处理就能够处理上述14个运算公式,而现行的方法需要处理14次,才能完成上述14个运算公式的处理,因此提高了运算公式的处理效率。

如图3所示,本发明实施例提供了一种运算公式处理装置,包括:设置模块301、获取模块302、分组模块303和公式处理模块304;

设置模块301,用于设置至少一个运算公式与至少一个运算级别之间的对应关系,并确定各个所述运算级别之间的运算顺序;

获取模块302,用于获取至少两个待处理运算公式;

分组模块303,用于根据设置模块301确定出的所述对应关系,确定获取模块302获取到的所述各个所述待处理运算公式对应的所述运算级别;根据各个所述待处理运算公式分别对应的运算级别,将所述至少两个待处理运算公式划分成至少一个公式组,其中,所述至少一个公式组与确定出的各个所述运算级别一一对应,且每一个所述公式组对应的运算级别与该公式组包括的任意一个所述待处理公式对应的所述运算级别相同;

公式处理模块304,用于根据设置模块301确定的运算顺序,从分组模块303确定出的所述至少一个公式组中依次确定待处理公式组,并同时处理所述待处理公式组中的各个所述待处理运算公式。

在本发明的一个实施例中,设置模块301,用于将每一个所述运算公式作为当前运算公式,均执行a1至a3:

a1,判断所述至少两个运算公式中是否存在与所述当前运算公式对应的至少一个关联公式,其中,所述至少一个关联公式与所述当前运算公式存在勾稽关系;如果是,则执行a2,否则,执行a3;

a2,根据所述勾稽关系,确定所述至少一个关联公式与所述当前运算公式之间的排列顺序;

a3,从所述至少两个运算级别中,确定默认运算级别,并为所述当前运算公式设置所述默认运算级别;

根据确定出的各个所述排列顺序,为每一个存在所述关联公式的所述运算公式,以及该运算公式对应的所述至少一个关联公式分别设置所述运算级别,以使设置的各个所述运算级别之间的所述运算顺序与所述排列顺序相同。

如图4所示,本发明实施例提供了另一种运算公式处理装置,

进一步包括:公式填写模块401;

公式填写模块401,用于创建自变量堆栈和因变量堆栈,并将所述至少两个运算公式的因变量和自变量分别填入所述因变量堆栈和所述自变量堆栈;

设置模块301,包括:第一检测单元3011、第二检测单元3012和公式确定单元3013;

第一检测单元3011,用于检测在所述自变量堆栈中是否存在所述当前运算公式的因变量,如果是,触发所述公式确定单元;否则,触发第二检测单元3012;

第二检测单元3012,用于检测在所述因变量堆栈中是否存在所述当前运算公式的自变量,如果是,触发公式确定单元3013;否则,确定不存在与所述当前运算公式对应的所述关联公式;

公式确定单元3013,用于根据所述自变量堆栈中的所述当前运算公式的因变量,和/或所述因变量堆栈中的所述当前运算公式的自变量,确定与所述当前运算公式对应的所述至少一个关联公式。

如图5所示,本发明实施例提供了又一种运算公式处理装置,

设置模块301,进一步包括:排序单元3014;

排序单元3014,用于当所述关联公式的自变量包括所述当前运算公式的因变量时,将所述当前运算公式排列在所述关联公式之前;当所述关联公式的因变量为所述当前运算公式的自变量时,将所述当前运算公式排列在所述关联公式之后;根据所述当前运算公式与所述关联公式的前后顺序,确定所述排列顺序。

在本发明的一个实施例提中,公式处理模块304,用于将所述运算顺序中排在最前的所述公式组确定为所述待处理公式组,执行c1到c4,直至各个所述公式组均被确定为所述待处理公式组;

c1,为所述待处理公式组中的每一个所述待处理运算公式配置预设线程;

c2,确定所述待处理运算公式所处的当前内存的空闲容量;

c3,根据确定出的所述空闲容量,确定所述当前内存能够同时执行所述预设线程的总数量n,并同时执行n个所述预设线程;

c4,判断是否存在至少一个未执行的所述预设线程,如果是,执行c2;否则,注销为所述待处理公式组中的各个所述待处理运算公式配置的预设线程,并根据所述运算顺序,将所述至少一个公式组中位于所述待处理公式组下一顺序的所述公式组作为所述待处理公式组,并执行c1。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述实施例中任一项所述的运算公式处理方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;

所述处理器和所述存储器通过所述总线连接;

所述存储器,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述实施例中任一项所述的运算公式处理方法。

综上所述,本发明各个实施例至少具有如下有益效果:

1、本发明一实施例中,预先设置至少两个运算公式与至少两个运算级别之间的对应关系,并确定各个运算级别之间的运算顺序,从而确定各个运算公式的处理顺序。在获取到待处理运算公式之后,根据设置的对应关系,确定各个待处理运算公式对应的运算级别,方便后续对各个待处理运算公式分组;再将处在同一级别的待处理公式划分到同一个公式组,以得到至少一个公式组,由于运算级别与运算顺序相对应,因此同一个公式组中,各个待处理运算公式对应的处理顺序也是相同的;根据设置的运算顺序,从至少一个公式组中,依次确定出待处理公式组,并同时处理待处理公式组中具有相同处理顺序的各个待处理运算公式。由此可见,本发明实施例,通过设置各运算公式与运算级别的对应关系,实现对待处理运算公式进行分组;根据运算级别之间的运算顺序,确定各个待处理运算公式的处理顺序,再按照运算顺序,依次对各个待处理运算公式进行并行处理,从而减少了运算公式的处理量,进而提高了处理运算公式的效率。

2、本发明一实施例中,根据勾稽关系为各个运算公式设置运算级别,使得同一级别对应的各个运算公式之间不存在勾稽关系,以实现对各运算级别对应的运算公式进行并行处理,从而进一步提高处理运算公式的效率。

3、本发明一实施例中,利用创建的自变量堆栈和因变量堆栈,查找各个运算公式间的勾稽关系,防止遗漏各个运算公式对应的关联公式,保证后续的设置运算级别的准确性。

4、本发明一实施例中,通过对待处理运算公式配置预设线程,实现并行处理各个待处理运算公式,从而进一步提高处理运算公式的效率。

5、本发明一实施例中,根据待处理运算公式所处的当前内存的空闲容量,确定同时处理线程的数量,以及在完成对每一个待处理公式组的处理后,注销预设线程,能够最大程度地利用当前内存的空闲容量来处理待处理运算公式,以提高对当前内存的使用效率。

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

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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