2010-06-23 3 views
3

궁금합니다. 시나리오는 예를 들어 웹 앱/사이트입니다. 동시 연결 수는 100 대이며 초당 많은 페이지로드가 발생합니다 (20?). 응용 프로그램이 서버에 서식 첨부 캐릭터 라인문자열 인 에이블 링 성능에 관한 질문

string.Format("Hello, {0}", username); 

을 필요로하는 경우

은 "안녕하세요, {0}"구금 될 것인가? 또는 단지 더 나은 성능을 줄 것이다, 인턴과 관련하여,

string hello = "Hello, {0}"; 
string.Format(hello, username); 

있는 구금 될 것이다 : 위 또는

StringBuilder builder = new StringBuilder() 
builder.Append("Hello, "); 
builder.Append(username); 

또는 그래서 심지어

string hello = "Hello, {0}"; 
StringBuilder builder = new StringBuilder() 
builder.Append("Hello, "); 
builder.Append(username); 

내 주요 질문 : 1) string.Format 리터럴을 내부에 넣을 수 있습니까? 2) 빠른 검색을 위해 stringbuilder에 대한 변수 이름을 설정하는 것이 좋으며 3) 조회 자체가 꽤 무겁습니까? (위의 # 1이 아니오 인 경우)

나는 이것이 아마도 소소한 결과를 가져올 것이라는 것을 알고 있지만, 나는 호기심이 많다.

+0

제목을 실제 질문으로 변경하십시오. – Kena

+0

완료되었습니다. 다시 투표 할 수 있습니까? :-) –

답변

3

및 String.format 실제로 내부적으로 모두 StringBuilder를 사용하므로 코드에서 직접 호출 할 이유가 없다. 리터럴의 인터네킹에 관한 한 두 코드 버전은 C# 컴파일러가 리터럴을 저장할 임시 변수를 만드는 것과 동일합니다.

마지막으로 웹 페이지에서 인턴의 효과는 무시할 수 있습니다. 페이지 렌더링은 본질적으로 견고한 문자열 조작이므로 차이 인터 네싱은 무시할 수 있습니다. 페이지 및 제어 캐싱을 사용하면 훨씬 더 쉽게 성능 이점을 얻을 수 있습니다. 시나리오가 정말 간단 경우

+0

어떻게 포인트가 적습니까? 좋은 답변 :-) –

+2

String.Format 문자열 작성기를 사용하여 문자열을 연결하는 경우에도 여전히 해당 매개 변수에 대한 형식 문자열을 구문 분석해야합니다. –

+1

대안은 문자열을 단계별로 작성하여 작성, 읽기 및 유지 관리가 어려운 코드를 작성하는 것입니다. 성능 향상이 너무 작아서이를 정당화 할 수 없습니다. 출력 캐싱과 같은 성능을 향상시키는 훨씬 더 유용한 방법이 있습니다. –

1

빠른 답변 : 100k 반복을 실행하고 알아보십시오.

0

당신은

return "Hello, " + username; 

을 이길 수 없습니다.

+0

사실이 아닙니다. StringBuilder와 String.Concat() 모두 훨씬 빠릅니다. –

+3

"안녕하세요"+ 사용자 이름; string.Concat ("Hello,", username)으로 컴파일 할 것이므로 나는 네가 옳다고 생각하지 않는다. –