我正在编写一些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中的值将永远变化为无法配对的double值。
ClassA
是什么,或者它填充了什么。所展示的代码可能成为瓶颈,但由于它不能编译或执行任何操作,显然你没有给我们展示所有的东西。 - Dour High Arch