我正在编写一些当前应该尽可能快地运行的 c# 代码,通常以 100% 的速度占用一个内核大约 25 分钟。我需要代码保持单核,因为跨多个内核运行此代码的好处不如同时运行该项目多次
有问题的代码如下:
public Double UpdateStuff(){
ClassA[] CAArray = ClassA[*a very large number indeed*];
Double Value = 0;
int length = CAArray.Length;
for (int i= 0; i< length ; i++)
{
Value += CAArray[i].ClassB.Value * CAArray[i].Multiplier;
}
return Value;
}
根据分析器,该代码区域负责应用程序负载的 78%,因此似乎是一个很好的优化候选者。
请注意,该函数已从返回类型 void 更改为返回类型 Double,这是伪代码而非实际代码,以便于阅读。
澄清:.net,c#4.0,visual studio 2010,目标机器:windows server 2008 x64。
编辑:进一步澄清:此上下文中的所有变量都是公共的,而不是属性。CAArray[i].ClassB.Value 中的值将永远改变不能成对匹配的双精度数。