gpt4 book ai didi

performance - 如何衡量Excel计算速度?

转载 作者:行者123 更新时间:2023-12-02 10:49:31 26 4
gpt4 key购买 nike

我正在开发一个 Excel 2010 应用程序,其中包含 60 多个工作表中的复杂计算。当我更改任何单元格中的某些数据时,后台计算会花费大量时间(我希望计算自动)......

  1. 有什么方法可以找出哪个公式比另一个公式花费更多时间吗?
  2. 提高性能的更好方法是什么 - 多个简单公式与单个复杂的(MULTISTEP)公式?


[STEP-1] E1 = C1 * D1
[STEP-2] F1 = E1 / B1
[STEP-3] G1 = F1 + B1

[SINGLE STEP] G1 = (C1 * D1 / B1) + A1

建议将不胜感激!
谢谢

最佳答案

对于第二部分,如果您使用普通的非 volatile 函数,那么多个简单的公式可能会更好,原因有两个:

  1. 在简单的重新计算(不重建依赖树)中,Excel 将仅计算实际更改的部分,例如在您的单步示例中,如果 A1 中的值发生变化,那么即使 C1 的值发生变化,Excel 也必须重新计算括号 (C1 * D1/B1) 中的表达式、D1、B1 不变。当您将该部分替换为对 F1 的引用时,如果仅 A1 更改其值,则不会重新计算 F1 的值。
  2. 如果您有多个核心,则可以更好地并行计算多个简单公式。

除 MSDN 之外的另一个有用链接:http://www.decisionmodels.com/calcsecretsc.htm

可变函数在非常大的工作簿中是有害的,尤其是 OFFSET 和 INDIRECT。每次文件中发生任何更改时,它们都会重新计算,并且始终在单个线程中计算。任何依赖于具有 volatile 函数的单元的单元也会变得 volatile ,因为每次重新计算 volatile 函数时都必须重新计算所有依赖项。大文件中的这种病毒式波动可能会严重损害性能。在这种情况下,使用许多简单的公式也有帮助,因为许多依赖项可以保持非 volatile 。

来自上面的链接:

Some Excel features do not use multithreaded calculation, for example:

Data table calculation (but structured references to tables do use MTC). User-defined functions (but XLL functions can be multithread-enabled). XLM functions. INDIRECT, CELL functions that use either the format2 or address options. GETPIVOTDATA and other functions referring to PivotTables or cubes. Range.Calculate and Range.CalculateRowMajorOrder. Cells in circular reference loops.

曾经,我继承了一个大文件,在专用的快速机器上重新计算需要 30 分钟,这是由于疯狂使用 OFFSETS 来访问大表中的数据。只需将计算逻辑从 Excel 移至 Access 并通过数据透视表导入结果,我就能将总计算时间减少到几秒钟!

关于performance - 如何衡量Excel计算速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com