Time for a follow up to my String.Concat vs String.Format Performance post from back in 2014!
I recently found out that string interpolation is not nearly as efficient as I would have thought. I also suspected that it was just doing a string concatenation, but it is actually doing a string format. This leads to a pretty significant performance degradation; the following test runs one million iterations of each.
Number of Args |
Interpolation Milliseconds |
String.Format Milliseconds |
String.Concat Milliseconds |
String Add Milliseconds |
StringBuilder Milliseconds |
---|---|---|---|---|---|
2 | 262 | 260 | 19 | 18 | 34 |
3 | 367 | 367 | 25 | 24 | 35 |
4 | 500 | 513 | 31 | 32 | 41 |
5 | 646 | 635 | 67 | 66 | 44 |
6 | 740 | 723 | 79 | 76 | 49 |
7 | 802 | 819 | 86 | 85 | 52 |
8 | 938 | 936 | 97 | 98 | 58 |
So, what's the lesson? Don't use string interpolation in high performance areas (such as your logger)!
Enjoy,
Tom