2016-10-19 5 views
1

私はパフォーマンスのためにこれを求めています - たくさんのボクシングを使用すると、より多くのGCが収集するヒープ割り当てが多くなり、時にはアプリを凍らせてユーザーを悩ませる原因になります。C#6の文字列補間はstring.Format()のようなボクシングを使用しますか?

+3

この[関連する投稿]によると、ストリング補間(http://stackoverflow.com/questions/31359360/does-c-sharp-6-0s-string-interpolation-rely-on-reflection?rq=1)コンパイル時に 'string.Format()'に変換されます。 [ここ](http://stackoverflow.com/questions/37985012/which-of-one-from-string-interpolation-and-string-format-is-better-in-performanc?rq=1)も参照してください。 –

答えて

3

すべての文字列補間は(少なくとも一般的な場合)string.Format()を呼び出すことです。 there is talk about improving that in the futureかかわら

は今、string.Format()を呼び出すと、(例えば、string.Format("{0:s} - {1:B}: The value is: {2:C2}", DateTime.UtcNow, Guid.NewGuid(), 3.50m)は13の割り当て、わずか3ボクシングのためにそれらのを作る)だけによるボクシングに非常に多くを割り当てません。

通常、パフォーマンスに関しては、読み取り可能なバージョンにはパフォーマンスに関する既知の問題があるため、すべてのコードを盲目的に書くべきではありません。代わりに、実際に必要となるコードの部分に、読みにくい効率的なコードを制限します。