3

我正在自动填充 Excel 中的一些列(一次一个)。这些专栏使用了我在 ExcelDna 中编写的 UDF。使用任务管理器,我注意到只有一半的核心被使用。Excel 设置设置为“使用这台计算机上的所有处理器”。所以我不明白为什么只有一半的核心在使用。想法?

4

1 回答 1

2

此页面包含有关 Excel 2007+ 中的多处理的一些有见地的解释 http://msdn.microsoft.com/en-us/library/office/aa730921(v=office.12).aspx#office2007excelperf_ExcelPerformanceImprovements

*参考:《多线程计算》《某些 Excel 功能不使用多线程计算,例如:数据表计算(但对表的结构化引用确实使用 MTC)。用户定义的函数(但 XLL 函数可以启用多线程)。XLM_

由于它没有具体描述“自动填充” - 我将从并发的角度对其进行破解。如果其中一些是猜测,请原谅..

某些功能需要一个“有序”的任务,不能轻易地跨处理器拆分,我们可能会怀疑 fill 是其中之一。(它需要在某些模式下进行顺序操作。例如:步进 1、1.2、1.4 等)。在此示例中,处理器 2 不能仅从页面中间开始而不执行新的/自定义的独立计算。必须设计特殊功能。也许他们决定不为这些场景编写代码。使用公式我什至看不到这是可能的,因为您可能正在创建公式树。

其他操作基于公式树是独立的(参见链接)。这强烈暗示 Excel 也不会多处理复杂的公式树 .. 因此,如果您连接了许多公式,它们(该树)将仅由一个处理器按顺序处理。

当然,对于这些情况,有各种复杂的变通方法..(可能类似于编译器、SQL 服务器等)但上面的文档强烈暗示微软设计它只是为了简化独立任务。

于 2012-11-20T19:51:13.317 回答