2011-07-27 13 views
0

私は自分のコードを持っており、私はそれを最適化したいと思います。私にとってはすでに最適化されているようです。誰かがどのように私はそれをもう少し最適化することができるか提案することができますか?私はどうなるこのC#コードを最適化する方法はありますか?

if (target == "power") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; 
} 
if (target == "notes") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } }; 
} 
if (target == "book") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } }; 
} 
return null; 
+2

すでに十分に見えるので、たいていの場合は移動できます。 – BoltClock

+1

あなたがここで得たパフォーマンスは、どんなに簡単なものでしょうか?しかし、本当に何かを変えたいのであれば、私はスイッチを使うことに同意するでしょう。 – user122211

+0

ターゲットを列挙型に変換できますか?次に、 'Target.Book'、' Target.Notes'などを持つことができます。次に、リテラル文字列ではなく、列挙値を比較します。しかし、私は 'target 'がどこに割り当てられているのかわからないので、オプションではないかもしれません。 –

答えて

2

switch文は、これらの状況に最適です:

switch(target) 
{ 
case "power": 
    return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; 
case "notes": 
    return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } }; 
case "book": 
    return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } }; 
default: 
    return null; 
} 

いけない本当に私が何か分からない

+1

参照http://stackoverflow.com/questions/427760/when-to-use-if-else-if-else-over-switch-statments-and-vice-versa – CodeNaked

+3

@ Nickあなたは 'breaks;の'到達不能なコード '警告を得るつもりです –

+0

私は休憩が必要ではないと思います。 – Eric

0

唯一のものはif-elseifチェーンにif秒に変更されます。あなたは他に何も実際にはありませんパフォーマンスを向上させるために行うことができます。

+0

OPはifブロックに戻ります。したがって、 'else if'は助けになりません。 – CodeNaked

+0

それはまだ意図を少しはっきりと示すかもしれません。 – Eric

+0

@ CodeNaked:私はそれが助けになるとは言いませんでした。それは、条件を相互に排他的であるコードを読んでいる人に、より良く伝えられます。 –

2

あなたのメソッドが"book"の値でより頻繁に呼び出されることがわかっている場合は、最初にそれを配置する必要があります。基本的に周波数の順番で並べ替えます。

0

...それは毎回返送されるので、カントー休憩を必要とするが、その良い習慣最適化についてのあなたの考えは だ場合、スピードの問題として は、単に」第二と第三の前にいくつかの「他」を入れていますが、少ないコード行を意味している場合、これはあなたを助けることができるようなものになることがあります。

return 
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } : 
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } : 
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null)))) 
+5

私は、私が保守しなければならないコードでその行を見たら、私の目は私の頭の中に巻き込まれていました。最適化は問題ありませんが、読みやすさがウィンドウの外に出るところまではありません。 – Tim

+2

あなたはそれをしている間に、スペースと改行をすべて削除します:)。午前中にあなたを目覚めさせるために、複数行の三項文を読むことのようなものはありません。 –

0

他の人が言及したように、間違った比較の総数を最小限に抑えるために、発生頻度が最も高い順に並べる必要があります。

「力」「ノート」と「ブック」を列挙型またはint型の表現に変更することは可能かもしれません。文字列の比較よりもわずかに速いかもしれません。

あなたができることはたくさんありますが、これは重要な最適化につながります。

関連する問題