电子表格公式按需计算方法及装置转让专利

申请号 : CN202211575907.1

文献号 : CN115658144B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 翟晨辉

申请人 : 西安葡萄城软件有限公司

摘要 :

本申请公开了一种电子表格公式按需计算方法及装置,属于电子表格信息处理技术领域。该方法具体包括:为电子表格的各单元格创建存储单元;其中,存储单元用于存储单元格的缓存数值、状态与公式,状态包括状态参数:有效参数与无效参数;当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的状态参数设为无效参数;在获取目标单元格的值时,若目标单元格存在公式且状态参数为无效参数,则执行更新步骤。该方法实现了电子表格中单元格的按需计算,避免了电子表格中一次性更新大量数据造成系统卡顿以及重复计算的问题。

权利要求 :

1.一种电子表格公式按需计算方法,其特征在于,包括:

为电子表格的各单元格创建存储单元;其中,所述存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数;

当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的所述状态参数设为所述无效参数;

在获取目标单元格的值时,若所述目标单元格存在所述公式且所述状态参数为所述无效参数,则执行更新步骤;所述更新步骤包括:确定所述目标单元格的依赖单元格,根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格;将更新后的所述目标单元格的所述状态参数改为所述有效参数;若所述依赖单元格存在依赖关系,则更新所述依赖单元格,直至所述依赖链上目标单元格的所有前驱单元格的所述状态参数均为所述有效参数。

2.根据权利要求1所述的方法,其特征在于,所述电子表格还包括赋值函数与取值函数;

所述赋值函数用于改变所述单元格中的值,所述取值函数用于获取所述单元格中的值。

3.根据权利要求2所述的方法,其特征在于,所述获取目标单元格的值包括所述目标单元格被所述取值函数获取值或出现在刷新界面时的可视区域。

4.根据权利要求1所述的方法,其特征在于,所述缓存数值用于存储单元格最近一次的更新结果。

5.根据权利要求1所述的方法,其特征在于,所述根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格,包括:使用计算引擎根据所述目标单元格的公式与其依赖单元格计算所述目标单元格;

将计算结果存入所述目标单元格的所述缓存数值并将所述计算结果返回所述目标单元格。

6.一种电子表格公式按需计算装置,其特征在于,包括:

创建存储单元模块,用于为电子表格的各单元格创建存储单元;其中,所述存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数;

修改参数模块,用于当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的所述状态参数设为所述无效参数;

更新模块,用于在获取目标单元格的值时,若所述目标单元格存在所述公式且所述状态参数为所述无效参数,则执行更新步骤;所述更新步骤包括:确定所述目标单元格的依赖单元格,根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格;将更新后的所述目标单元格的所述状态参数改为所述有效参数;若所述依赖单元格存在依赖关系,则更新所述依赖单元格,直至所述依赖链上目标单元格的所有前驱单元格的所述状态参数均为所述有效参数。

7.一种设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

所述处理器执行所述可执行指令时,实现如权利要求1至5中任意一项所述的方法。

8.一种非易失性计算机可读存储介质,其特征在于,包括用于存储计算机程序或指令,当该计算机程序或指令被执行时,使如权利要求1至5中任一项所述的方法被实现。

说明书 :

电子表格公式按需计算方法及装置

技术领域

[0001] 本申请涉及电子表格信息处理技术领域,尤其涉及一种电子表格公式按需计算方法及装置。

背景技术

[0002] 电子表格是一类可以在电子设备中输入输出、显示数据与处理数据的计算机程序或组件。电子表格通常由一个或多个工作表组成,每个工作表由若干个行与列组成,行与列交叉构成单元格,每个单元格用其所在的行号和列号(又称单元地址)来标识。单元格中可以输入与显示多种类型的信息,包括:数值、文字、日期、图像、链接、数学公式,对象等,并且各个单元格之间可以建立关联关系,进而被广泛应用于智能化办公、数据管理与统计等领域。
[0003] 电子表格的单元格之间可以通过公式建立联系,实现数学运算。当一个单元格中的值发生改变后,依赖它的其他单元格需要重新计算。在现有技术中,当一个单元格的值改变后,和该单元格存在依赖关系的所有单元格中的值会自动一次性更新,但当依赖它的单元格的数量非常多,大量的单元格计算比较耗时,同时也会增加处理器的负担,出现明显的卡顿,影响用户体验。另一方面,更新后的单元格数据并不会全部被使用,一次性全部更新的方法会增加很多不必要的计算,甚至可能出现重复计算的情况,增加了不必要的处理时间和处理成本,造成了计算资源的浪费。

发明内容

[0004] 本申请实施例通过提供一种电子表格公式按需计算方法及装置,解决了现有技术中单元格中值改变后,依赖它的单元格会全部一次性更新,大量的数据计算增加了处理器负担,而且大量暂不使用的单元格中的数据也会被更新,增加了不必要的处理时间和处理成本,造成计算资源的浪费的问题。本申请实施例实现了电子表格中单元格按需计算,只有获取单元格中的数据或单元格出现在界面刷新时的可视区域内,该单元格才会被计算,减少不必要的单元格计算,以此避免系统卡顿,提升用户体验。
[0005] 第一方面,本申请实施例提供了一种电子表格公式按需计算方法,包括:为电子表格的各单元格创建存储单元;其中,所述存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数;当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的所述状态参数设为所述无效参数;在获取目标单元格的值时,若所述目标单元格存在所述公式且所述状态参数为所述无效参数,则执行更新步骤;所述更新步骤包括:确定所述目标单元格的依赖单元格,根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格;将更新后的所述目标单元格的所述状态参数改为所述有效参数。
[0006] 结合第一方面,在第一种可能的实现方式中,所述电子表格还包括赋值函数与取值函数;所述赋值函数用于改变所述单元格中的值,所述取值函数用于获取所述单元格中的值。
[0007] 结合第一方面的第一种可能的实现方式,在第二种可能实现的方式中,所述获取目标单元格的值包括所述目标单元格被所述取值函数获取值或出现在刷新界面时的可视区域。
[0008] 结合第一方面,在第三种可能的实现方式中,所述缓存数值用于存储单元格最近一次的更新结果。
[0009] 结合第一方面,在第四种可能的实现方式中,所述根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格,包括:使用计算引擎根据所述目标单元格的公式与其依赖单元格计算所述目标单元格;将计算结果存入所述目标单元格的所述缓存数值并将所述计算结果返回所述目标单元格。
[0010] 结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格,还包括:若依赖单元格存在依赖关系,则更新依赖单元格,直至所述依赖链上目标单元格的所有前驱单元格的所述状态参数均为所述有效参数。
[0011] 第二方面,本申请实施例提供了一种电子表格公式按需计算装置,包括:创建存储单元模块,用于为电子表格的各单元格创建存储单元;其中,所述存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数;修改参数模块,用于当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的所述状态参数设为所述无效参数;更新模块,用于在获取目标单元格的值时,若所述目标单元格存在所述公式且所述状态参数为所述无效参数,则执行更新步骤;所述更新步骤包括:确定所述目标单元格的依赖单元格,根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格;将更新后的所述目标单元格的所述状态参数改为所述有效参数。
[0012] 结合第二方面,在第一种可能的实现方式中,所述电子表格还包括赋值函数与取值函数;所述赋值函数用于改变所述单元格中的值,所述取值函数用于获取所述单元格中的值。
[0013] 结合第二方面的第一种可能的实现方式,在第二种可能实现的方式中,所述获取目标单元格的值包括所述目标单元格被所述取值函数获取值或出现在刷新界面时的可视区域。
[0014] 结合第二方面,在第三种可能的实现方式中,所述缓存数值用于存储单元格最近一次的更新结果。
[0015] 结合第二方面,在第四种可能的实现方式中,所述根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格,包括:使用计算引擎根据所述目标单元格的公式与其依赖单元格计算所述目标单元格;将计算结果存入所述目标单元格的所述缓存数值并将所述计算结果返回所述目标单元格。
[0016] 结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格,还包括:若依赖单元格存在依赖关系,则更新依赖单元格,直至所述依赖链上目标单元格的所有前驱单元格的所述状态参数均为所述有效参数。
[0017] 第三方面,本申请实施例提供了一种设备,所述设备包括:处理器;用于存储处理器可执行指令的存储器;所述处理器执行所述可执行指令时,实现如第一方面或第一方面任一种可能实现的方式所述的方法。
[0018] 第四方面,本申请实施例提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质包括用于存储计算机程序或指令,当该计算机程序或指令被执行时,使如第一方面或第一方面任一种可能实现的方式所述的方法被实现。
[0019] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0020] 本申请实施例通过采用了一种电子表格公式按需计算方法及装置,为电子表格中的每个单元格建立存储单元,在电子表格中的数据发生改变时,只改变依赖链上单元格的状态参数,通过判断单元格是否更新,将当前不使用的单元格推迟更新,只更新当前使用的单元格中的数据,避免一次性更新大量数据造成系统卡顿,同时建立的单元格存储单元能够避免出现重复计算,通过建立单元格存储单元与推迟更新结合实现电子表格按需计算,有效解决了一次性更新所有存在依赖关系的单元格,造成的计算量过大引起系统卡顿,能够提升计算性能,并减少不必要的处理时间与处理成本。

附图说明

[0021] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022] 图1为本申请实施例提供的电子表格公式按需计算方法的流程图;
[0023] 图2为本申请实施例提供的更新步骤的步骤示意图;
[0024] 图3为本申请实施例提供的更新目标单与格的步骤示意图;
[0025] 图4为本申请实施例提供的电子表格公式按需计算方法的方法路线图;
[0026] 图5为本申请实施例提供的电子表格公式按需计算装置的示意图;
[0027] 图6为本申请实施例提供的电子表格依赖关系示意图。

具体实施方式

[0028] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 以下对本申请实施例涉及的部分技术做出说明,以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了部分对公知功能和结构的描述。
[0030] 电子表格通过公式建立起单元格之间的关系,一个单元格中的值发生改变后,依赖它的其它单元格需要重新计算。在本申请实施例中将依赖单元格的所有单元格称为后继单元格,将被该单元格依赖的所有单元格称为前驱单元格。如图6所示,B1中有公式:=A1+2,C1中有公式:=B1*2,D1中有公式:=E1*2。我们可以得到这样的依赖关系:B1依赖A1,C1依赖B1,D1依赖E1。根据上述依赖关系可以确定在两条依赖链:C1‑>B1‑>A1与D1‑>E1。在依赖链C1‑>B1‑>A1中单元格C1为单元格B1的后继单元格,单元格A1为单元格B1的前驱单元格。当单元格A1中的值发生改变后,依赖链上的后继单元格B1与C1需要重新计算;当单元格B1中的值发生改变,只有其后继单元格C1需要重新计算,前驱单元格A1则不需要;当单元格E1中的数值发生改变后,依赖链上的后继单元格D1需要重新计算。其中,上述C1‑>B1‑>A1与D1‑>E1是本申请实施例中对依赖链的一种表述形式,其中的“‑>”用于指示单元格之间的单向依赖关系,亦可用“<‑”标识单元格之间的单向被依赖关系,本领域技术人员在说明依赖链时可采用其他多种形式,不用于对本申请实施例保护范围的具体限制。
[0031] 另一方面,在电子表格中不存在公式的单元格可以修改其值,其他依赖公式计算数值的单元格中实际上是公式,只是在单元格中显示公式的计算结果,存在公式的单元格可以修改其公式亦可将公式改为具体数值,但将公式改为具体数值后该单元格将失去其所有的前驱单元格。其中,单元格中的值除了公式与数值还可以是文本、布尔类型或其他。如图6所示的电子表格中,单元格A1与E1中不存在公式,故可以直接修改单元格中的数值,在界面刷新或被获取时由于其不存在公式可以被直接获取,单元格B1、C1与D1中的数值是根据公式计算获得的,故在刷新界面或获取单元格值时,此类存在公式的单元格需要判断是否更新,进而确定是否更新单元格中的值。
[0032] 图1是本申请实施例提供的电子表格公式按需计算方法的流程图,包括步骤101至步骤103。其中,图1仅为本申请实施例示出的一种执行顺序,并不代表电子表格公式按需计算方法的唯一执行顺序,在可实现最终结果的情况下,图1所示出的步骤可以被并列或颠倒执行。
[0033] 步骤101:为电子表格的各单元格创建存储单元;其中,存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数。具体如下:
[0034] 在本申请实施例中,为每个单元格设置三个存储单元,分别存储Value、Status和Formula,即缓存数值、状态与公式,状态包含两个状态参数分别为有效参数与无效参数,使用有效参数表征有效状态,无效参数表征无效状态,有效参数为Valid,无效参数为Dirty。单元格的缓存数值用于存储单元格最近一次的更新结果。在电子表格中还包括赋值函数与取值函数;赋值函数用于改变单元格中的值,取值函数用于获取单元格中的值。在本申请实施例中赋值函数使用SetValue(),取值函数使用GetValue(),在使用赋值函数SetValue(object value)时不会计算与更新单元格,只有在使用GetValue()获取值时,才开始判断这个单元格是否需要计算,才会引发计算。即使某一单元格中的值被改变了无数次,后面依赖它的单元格也不会立即随着它的改变而更新,只有在被获取时才会进行判断而更新一次,能够极大地提升系统效率,避免多次计算。其中,在本申请实施例中Value、Status、Formula、Valid、Dirty、SetValue()与GetValue()仅为一种示例,不作为对本申请实施例的限制,本领域技术人员应当将其理解为一种命名,可根据实际情况进行修改。
[0035] 步骤102:当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的状态参数设为无效参数。具体为,当改变一个单元格中的值时,确定被改变值的单元格的依赖链,将该单元格与其依赖链上的所有后继单元格的状态参数改为无效参数,在后面更新过程中只会更新这些依赖链上状态参数为无效的单元格,其他无关单元格或状态参数为有效参数的单元格不需要计算。其中,本申请实施例中不存在公式的单元格在为其建立的存储单元中公式为空,用null表示。另一方面,确认依赖链以及建立依赖链在现有技术中有多种方式,在此不做具体叙述,本申请实施例只是根据依赖链获取准确的依赖关系,进而利用依赖链进行数据更新,并不限制依赖链的建立方法与确认方法。
[0036] 步骤103:在获取目标单元格的值时,若目标单元格存在公式且状态参数为无效参数,则执行更新步骤。如图4中步骤403至步骤405,在获取目标单元格中的值时先对目标单元格进行判断,只有当目标单元格存在公式且状态参数为无效参数时,才进行计算步骤。若目标单元格不存在公式或状态参数为有效参数则可直接获取值。更新步骤如图2所示,包括步骤201至步骤202,具体如下:
[0037] 步骤201:确定目标单元格的依赖单元格,根据目标单元格的依赖单元格与存储单元更新目标单元格。其中,根据目标单元格的依赖单元格与存储单元更新目标单元格如图3所示,包括步骤301至步骤302,具体如下:
[0038] 步骤301:使用计算引擎根据目标单元格的公式与其依赖单元格计算目标单元格。调用计算引擎根据目标单元格的公式与其依赖单元格中的值计算目标单元格。如图4中步骤407至步骤410所示,在获取第一依赖单元格中的值时,还需要判断目标单元格的第一依赖单元格是否存在第二依赖单元格,若第一依赖单元格不存在第二依赖单元格,则直接返回第一依赖单元格中的值并代入公式进行计算;若第一依赖单元格存在第二依赖单元格则将第一依赖单元格按照目标单元格的更新步骤403至步骤410进行判断与计算,若第二依赖单元格还存在第三依赖单元格,则将第二依赖单元格作为第一依赖单元格进行迭代计算直至计算出目标单元格的所有前驱单元格中的值。其中,上述计算引擎在默认状态下为工作状态,但用户可以根据预设的API控制计算引擎停止工作,故在使用计算引擎时为确保能够正确执行此步骤,本领域技术人员可以根据实际情况增加判断计算引擎是否工作这一步骤,仍属于本发明保护的范围。
[0039] 步骤302:将计算结果存入目标单元格的缓存数值并将计算结果返回目标单元格。具体为,将步骤201中由计算引擎算得的计算结果存入目标单元格的缓存数值,再将该计算结果返回给目标单元格。
[0040] 步骤202:将更新后的目标单元格的状态参数改为有效参数。具体为,当一个状态参数为无效参数的单元格更新后需要将该单元格的状态参数改为有效参数。在步骤301中若当前目标单元格的依赖单元格还存在依赖单元格,则需要迭代计算出所有前驱单元格中的值,将每次计算完成后的依赖单元格的状态参数改为有效参数,直至依赖链上所有前驱单元格的状态参数都为有效参数。在本申请实施例中只要单元格的状态参数为有效参数,在进行取值判断的时候则不需要对该单元格进行计算与更新,而是将缓存数值返回给取值函数,避免了不必要的重复计算。
[0041] 其中,步骤103获取目标单元格的值包括目标单元格被取值函数获取值或出现在刷新界面时的可视区域。具体为,在本申请实施例中通过推迟计算,即单元格中的值被赋值函数改变后并不会立即更新所有该被改变值的单元格的后继单元格,而在单元格被取值函数获取值时才根据建立的存储单元判断该单元格是否需要更新计算,这些被取值函数获取的单元格即为目标单元格,目标单元格包括被取值函数获取值的单个单元格或刷新界面时可视区域内的被取值函数同时取值的一片单元格。当一个单元格中的值改变后,系统会发送一个异步消息用于刷新界面,在刷新界面时会引发大量的更新计算,但整个电子表格中数据非常多,用户又只能看到当前可视区域内的几十个单元格,故在刷新界面时取值函数只会获取当前可视区域内一片单元格中的值,实现只更新可视区域内的单元格,其他单元格可以推迟计算,当出现在界面可视区域内时再获取值进行更新计算,这样大量的单元格更新都被推迟了,每次只需计算可视区域内的几十个单元格,有效地减少了系统每次更新的计算工作量。
[0042] 需要注意的是,在本申请实施例中所在更新计算时所提到的依赖链不一定是整条完整的依赖链,也包括整条依赖链上的一段依赖链。具体为,在步骤102中,将改变值的单元格与其依赖链上的所有后继单元格的状态参数设为无效参数,此处的依赖链为整条完整的依赖链,在其他进行更新计算的步骤中,所提到的依赖链为被改变值的单元格到被获取值的目标单元格的这一段依赖链。例如,若存在依赖链F1‑>E1‑>D1‑>C1‑>B1‑>A1,改变单元格A1中的数值后,依赖链上的所有单元格的状态参数都需要修改为无效参数,在获取单元格D1中的数值时,所确定的依赖链为单元格D1的前驱单元格A1到单元格D1的这一段依赖链。本领域技术人员根据本申请实施例按需计算的方法思想应当意识到两者在执行过程中的区别。
[0043] 虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。本实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照本实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
[0044] 如图5所示,本申请实施例还提供了电子表格公式按需计算装置500。该装置包括:创建存储单元模块501、修改参数模块502与更新模块503。
[0045] 创建存储单元模块501用于为电子表格的各单元格创建存储单元;其中,所述存储单元用于存储单元格的缓存数值、状态与公式,所述状态包括状态参数:有效参数与无效参数。创建存储单元模块501具体用于,为每个单元格设置三个存储单元,分别存储缓存数值、状态与公式。状态包含两个状态参数,分别为有效参数与无效参数,使用有效参数表征有效状态,无效参数表征无效状态。单元格的缓存数值用于存储单元格最近一次的更新结果。在电子表格中还包括赋值函数与取值函数;赋值函数用于改变单元格中的值,取值函数用于获取单元格中的值。在本申请实施例中赋函数使用SetValue(),取值函数使用GetValue(),在使用赋值函数SetValue(object value)时不会计算与更新单元格,只有在使用GetValue()获取值时,才开始判断这个单元格是否需要计算,才会引发计算。
[0046] 修改参数模块502用于当其中一个单元格的值改变时,将改变值的单元格与其依赖链上的所有后继单元格的所述状态参数设为所述无效参数。修改参数模块502具体用于,当改变一个单元格中的值时,确定被改变值的单元格的依赖链,将该单元格与其依赖链上的所有后继单元格的状态参数设为无效参数,在后面更新过程中只会更新这些依赖链上的后继单元格,其他无关或状态参数不发生改变的单元格不需要计算。
[0047] 更新模块503用于在获取目标单元格的值时,若所述目标单元格存在所述公式且所述状态参数为所述无效参数,则执行更新步骤;所述更新步骤包括:确定所述目标单元格的依赖单元格,根据所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格;将更新后的所述目标单元格的所述状态参数改为所述有效参数。更新模块503具体用于,在获取目标单元格中的值时先根据存储单元对目标单元格进行判断,只有当目标单元格存在公式且状态参数为无效参数时,才进行更新步骤。更新模块503中所述目标单元格的所述依赖单元格与所述存储单元更新所述目标单元格具体用于,使用计算引擎根据所述目标单元格的公式与其依赖单元格计算所述目标单元格;将计算结果存入所述目标单元格的所述缓存数值并将所述计算结果返回所述目标单元格。具体包括,根据所确定的目标单元格的依赖链确定目标单元格的依赖单元格,调用计算引擎根据目标单元格的公式与其依赖单元格中的值计算目标单元格。将计算结果存入目标单元格的缓存数值,再将该计算结果返回给目标单元格,将目标单元格的状态参数改为无效参数。若当前目标单元格的依赖单元格还存在依赖单元格,则需要迭代计算出所有前驱单元格中的值,将每次计算完成后的依赖单元格的状态参数改为有效参数,直至依赖链上所有前驱单元格的状态参数都为有效参数。在本申请实施例中只要单元格的状态参数为有效参数,在进行取值判断的时候则不需要对该单元格进行计算与更新,而是将缓存数值返回给取值函数,避免了不必要的重复计算。
[0048] 上述存储介质包括但不限于随机存取存储器(英文:RandomAccessMemory;简称:RAM)、只读存储器(英文:Read‑Only Memory;简称:ROM)、缓存(英文:Cache)、硬盘(英文:
Hard DiskDrive;简称:HDD)或者存储卡(英文:MemoryCard)。所述存储器可以用于存储计算机程序指令。
[0049] 上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
[0050] 本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(英文:Application Specific Integrated Circuit;简称:ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0051] 本申请实施例还提供了一种设备,所述设备包括:处理器;用于存储处理器可执行指令的存储器;所述处理器执行所述可执行指令时,实现如本申请实施例所述的方法。
[0052] 本申请实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序或指令,当该计算机程序或指令被执行时,使如本申请实施例中所述的方法被实现。
[0053] 此外,在本发明的各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独存在,也可以两个或两个以上模块集成在一个模块中。
[0054] 上述存储介质包括但不限于随机存取存储器(英文:RandomAccessMemory;简称:RAM)、只读存储器(英文:Read‑Only Memory;简称:ROM)、缓存(英文:Cache)、硬盘(英文:
Hard DiskDrive;简称:HDD)或者存储卡(英文:MemoryCard)。所述存储器可以用于存储计算机程序指令。
[0055] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0056] 本说明书中的各个实施方式采用递进的方式描述,各个实施方式之间相同或相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0057] 以上实施例仅用以说明本申请的技术方案,而非对本申请限制;尽管参照前述实施例对本申请进行了详细的说明,本领域普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请技术方案的范围。