最近、いくつかのコードをリファクタリングし、次のようなメソッドを持つ静的ユーティリティ クラスを作成しました。
const int x = 1;
public static string doWork(ref DataTable dt)
{
decimal total = 0;
foreach (DataRow row in dt.Select("COST_ID = " + x))
{
decimal annual = decimal.Parse(row["Cost"].ToString());
total += decimal.Round(annual, 2);
}
return String.Format("{0:C}", total);
}
わかりやすくするために例を単純化しました...
これを行って、ASP.NET アプリケーションのコード ビハインドに doWork メソッドの呼び出しを配置すると、多くのユーザーがヒットするという悪影響を経験する可能性はありますか? パフォーマンスに関して、静的メソッドがどのように機能するかを知ることができる人はいますか? これはあらゆる種類のボトルネックになりますか?
編集:
はい、申し訳ありませんが、これはあまり良い例ではありません。次のように言ってみましょう。
const int x = 1;
public static string doWork(ref DataTable dt)
{
foreach (DataRow row in dt.Select("COST_ID = " + x))
{
row["Cost"] = 0.0;
}
}
A) Datatable は既に ref によって渡されているため、実際にはここで ref は必要ありません。B) 単一の静的メソッドへのすべての呼び出しを「ファネリング」しても、パフォーマンスはまったく影響を受けません。