私は現在可能な限り高速に実行されることになっているいくつかの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%を占めているため、最適化の候補として適しているようです。
関数がreturnタイプvoidからreturnタイプDoubleに変更されていることに注意してください。これは疑似コードであり、読みやすくするための実際のコードではありません。
明確にするために:.net、c#4.0、Visual Studio 2010、ターゲットマシン:Windows Server2008x64。
編集:さらに明確にする:このコンテキストのすべての変数はパブリックであり、プロパティではありません。CAArray [i] .ClassB.Valueの値は、ペアマッチングできないdoubleを永久に変更します。