2017-01-31 4 views
-3

パフォーマンス面では、何か違いがありますか? stringX + 'y'stringX + "y"1文字の文字列またはcharを追加する方が効率的ですか?

違いがある場合は、どうしてですか?

私の質問は主にC#に関連しています。

+9

質問する前にテストしてみませんか? –

+0

'StringBuilder' –

+0

あなたの時間はおそらく他の問題について考えるより良いでしょう。このようなことは決して最大のボトルネックにはならず、これを本当に最適化したい場合は、パフォーマンスではなく読みやすさのために最適化してください。 –

答えて

12

この2つの間には全く違いはありません。たとえば、次の2つの機能している場合:

ここ
static string Method1() 
{ 
    var stringX = "abc"; 
    var res = stringX + 'y'; 
    return res; 
} 

static string Method2() 
{ 
    var stringX = "abc"; 
    var res = stringX + "y"; 
    return res; 
} 

が対応するILだC#コンパイラによって放出されます(リリースモードでビルド):

.method private hidebysig static string Method1() cil managed 
{ 
    IL_0000: ldstr "abc" 
    IL_0005: ldstr "y" 
    IL_000a: call string [mscorlib]System.String::Concat(string, string) 
    IL_000f: ret 
} 

.method private hidebysig static string Method2() cil managed 
{ 
    IL_0000: ldstr "abc" 
    IL_0005: ldstr "y" 
    IL_000a: call string [mscorlib]System.String::Concat(string, string) 
    IL_000f: ret 
} 

コンパイラが発生することは十分にインテリジェントであります非常に珍しいstringX + 'y'構築物のための適切なIL。

関連する問題