gpt4 book ai didi

multithreading - excel多线程计算速度慢

转载 作者:行者123 更新时间:2023-12-02 07:55:20 51 4
gpt4 key购买 nike

我想知道是否有任何方法可以控制 Excel 计算,以便并行重新计算 WB 中的几张工作表,而其他工作表则不会。我的问题是,在当前设置下,我的顺序计算过程花费的时间太长。该序列由 VBA 驱动,如下所示:1)vba调用插件(excel-dna vb.net插件,控制数据读取器和附加数据库)2) addin 将数据返回到工作表 1。工作表 2-3 按顺序重新计算(工作表 2,然后是工作表 3)3) 表 4 到表 10 按顺序重新计算,但由于每个表独立地仅链接到表 2,因此理论上它们可以并行重新计算 - 对吗?但如何做到这一点呢?4) 再次开始处理,通过 1) 中描述的 vba 插件调用新数据

在我的笔记本电脑(64 位,32 位 excel,intel i7)上运行数据子集需要 54.6 秒。有趣的是,如果我关闭多线程,则需要 25.8 秒!更重要的是,如果我在超快速机器(2 个 Intel Xeon X5570、四核“Nehalem”架构、64 位和 64 位 excel)上运行它,它会比我的笔记本电脑慢,使用多线程需要 230 秒,不使用多线程则需要 26 秒。

我想知道是否有更好的方法可以利用多核和多线程。缓慢的位似乎是 Excel 重新计算而不是插件速度。任何建议表示赞赏。

编辑:上面的描述有点简化 - 实际上,我还有一个迭代的“calc/paste-vales/recalc”过程,该过程在第 4-10 页的每张上运行(迭代继续进行,直到达到一些所需的灵敏度,并且仅然后是计算完整的工作表)。我相信这使得在当前设计下运行 wb 计算变得不可行。

表 4-10 是相同的(硬编码输入参数除外),并且彼此之间没有计算依赖性。如果每个计算过程(提到的迭代过程和表计算)可以并行而不是顺序完成,我认为整个过程会快得多。

仅供引用,我已经执行了更明显的简化和测试(分解公式、分离 volatile 函数等)。

按照目前的流程运行我的整个数据集大约需要 16 个小时,这就是为什么我渴望找到一些方法来改进这一点。

谢谢!

最佳答案

  • 这是阅读有关 Excel 计算性能的良好开端: http://www.decisionmodels.com/calcsecretsc.htm .

  • 您可以使用 [ExcelFunction(IsThreadSafe=true)] 等属性将 Excel-DNA 函数标记为线程安全的,尽管这听起来不像是这里的瓶颈。这将允许同时评估这些函数。

  • 如果您的 i7 处理器具有超线程(因此它向 Windows 报告 4 个核心,但实际上只有两个真正的核心),那么将 Excel 线程数设置为核心数会更快(例如2) 而不是处理器可以运行的线程数(Excel 默认值 - 可能是 4)。

关于multithreading - excel多线程计算速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9903520/

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