C# 문자열 보간법 (String Interpolation) 성능 비교

문자열 보간법




C# 6.0 에서는 문자열을 생성하는 새로운 방법이 나왔습니다. 이전에 변수나 식 결과를 문자열의

중간 또는 끝에 삽입 하려면 + 연산자를 사용하거나 String.format 을 사용하였는데 문자열

보간기능을 사용하려면 문자열 내에 중괄호 { } 부호를 넣고 안에 식을 넣기만 하면 됩니다.



사용 예





const string hi = "안녕하세요";
const string bye = "안녕히가세요";
Point point = new Point(30,50);
string text = $"{hi} {bye} {point.X} {point.Y}"; 
/* 
    안녕하세요 안녕히가세요 30 50
*/

Console.WriteLine("{gender==1?"남자":"여자"} 입니다.");

중괄호내에 표현식을 넣으면 ToString() 결과값으로 대체합니다.

즉 어떠한 값 형식 ( int, float, double, bool , ... )이나 참조 형식을 넣어도 ToString() 으로 대체 되어 출력됩니다.



다른 방법과 성능 비교




using System;
using System.Diagnostics;

class Program
{ 
	static void Main()
	{
		int loopCount = 10000000;

		long first = 50002030223;
		string second = "abcdefghijklmnopqrstuvwxyz";
		
		// 문자열 연결
		var stopWatch = Stopwatch.StartNew(); 

		for(int i = 0; i < loopCount; i++)
		{
			string result = first + " - " + second;
		} 
		stopWatch.Stop();

		Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds);

		// 문자열 보간 String Interpolation 
		stopWatch = Stopwatch.StartNew();

		for (int i = 0; i < loopCount; i++)
		{
			string result = $"{first} - {second}";
		}
		stopWatch.Stop();

		Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds); 

		// 복합 형식 지정 Format 
		stopWatch = Stopwatch.StartNew();

		for (int i = 0; i < loopCount; i++)
		{
			string result = string.Format("{0} - {1}", first, second);
		}
		stopWatch.Stop();

		Console.WriteLine(stopWatch.Elapsed.TotalMilliseconds); 
	}
}


Output

 

//1천만 회 돌렸을때 걸리는 계산 시간
1527.379 // 문자열 이어 붙이기
2075.5812 // 문자열 보간 
2092.5805 // format

문자열을 이어 붙이는 방법이 가장 처리가 빨랐고 문자열 보간과 format은 비슷하게 나왔습니다.



+ Recent posts