문제

가능한 복제물 :
stringbuilder만큼 효율적인 string.format입니다
C# 문자열 출력 : 형식 또는 동의?

성능 우선 순위는 무엇이며 다음 각각을 선호하는 조건은 무엇입니까?

String.Format("{0}, {1}", city, state);

또는

city + ", " + state;

또는

StringBuilder sb = new StringBuilder();
sb.Append(city);
sb.Append(", ");
sb.Append(state);
sb.ToString();
도움이 되었습니까?

해결책

  • 컴파일러는 가능한 한 많은 문자열을 최적화하므로 예를 들어 라인 브레이크 목적으로 분해되는 문자열은 일반적으로 단일 문자열 문자로 최적화 될 수 있습니다.
  • 변수와의 연결은 String.concat으로 컴파일됩니다
  • StringBuilder는 문자열에 "수정"을 여러 개보다 더 빠르게 할 수 있지만, 버퍼에 필요한 것보다 더 많은 공간을 할당하고 내부 버퍼를 만들 때 더 많은 공간을 할당하기 때문에 여분의 오버 헤드를 전달할 수 있습니다. 필요합니다.

나는 개인적으로 string을 사용합니다. 거의 모든 시간을 두 가지 이유로 형성합니다.

  • 많은 변수를 재 배열하는 것보다 형식 문자열을 유지하는 것이 훨씬 쉽습니다.
  • String.format는 지정된 문화에 대해 적절한 숫자 형식을 얻을 수 있도록 문자열 (예 : 숫자)에 내장 된 iformattable 유형으로 전달되는 iformatprovider를 가져옵니다.

예를 들어, 일부 배양 물은 쉼표를 소수점으로 사용하므로 stringBuilder 또는 String.format inductinfo.invariantculture를 지정하도록 보장하고자합니다.

주목 할 두 가지 ...

  • StringBuilder에는 불필요한 두 번째 버퍼가 필요하지 않고 String.format의 유연성을 제공하는 appendformat 함수가 있습니다.
  • StringBuilder를 사용할 때는 부여하기 위해 전달하는 매개 변수를 연결하여 목적을 물리 치지 않도록하십시오. 놓치기 쉬운 사람입니다.

다른 팁

관련된 차이는 없습니다. 그러나 해당 string.format을 내부적으로 StringBuilder (반사판 도구로 볼 수 있음)를 사용하면 직접 StringBuilder를 사용하여 더 빠르십시오.

편집 : 물론 "+"연산자를 사용하는 것은 최악의 옵션입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top