【发布时间】:2012-10-14 07:44:41
【问题描述】:
我有一个方法CalculateLinearRegression() 调用Excel.Application.WorksheetFunction 类的LinEst 函数。每次调用 CalculateLinearRegression() 时,LinEst 会被调用大约 3,500 次。我将 WorksheetFunction 类注入到我的方法中,因此我知道只创建了该类的一个实例。
CalculateLinearRegression() 的每次调用大约需要 10 分钟,我确信是 LinEst 函数正在减慢速度(删除对 LinEst 的调用并对结果进行硬编码意味着该方法可以在一对夫妇中运行秒)。
我很欣赏LinEst 正在做相当多的计算,但我怀疑它做的太多会导致这种延迟,因此我认为可能是对 Excel 函数的调用增加了延迟。有谁知道加快速度的方法,还是直接用 C# 替代 LinEst 函数?
【问题讨论】:
-
你有没有分析过它?它可能是互操作的阻碍,但由于方法是fairly well documented,您是否考虑过自己重新实现它?
-
你可以调用一个宏/使用定义的函数而不是多次调用。
-
是的。如果这是您进行 3500 次的互操作转换,那么您最好尽可能进行一次转换,并按照 Weismat 的建议调用宏。