문제

웹 앱에서 나는 문자열을 분할하고 링크 이름이나 문자열 모음에 할당하고 있습니다. 웹 애플리케이션에 StringBuilder를 사용하는 데 상당한 성능 이점이 있습니까?

편집 : 2 개의 기능 : 링크를 5-10 문자열로 나눕니다. 그런 다음 다른 문자열로 다시 포장됩니다. 또한 링크를 클릭 할 때마다 한 번에 하나의 문자열을 링크에 추가합니다.

도움이 되었습니까?

해결책

얼마나 많은 문자열을 연결 하시겠습니까? 데이터베이스 등에 얼마나 많은 레코드가 있는지에 달려 있습니까?

보다 이 주제에 대한 나의 기사 자세한 내용과 가이드 라인 - 그러나 기본적으로 웹 앱에 있으면 StringBuilder를 사용하여 STRING 연결이 얼마나 비싼 String 연결과 차이가 없습니다.

편집 : 나는 그것이 당신이 무엇을하고 있는지 정확하게 질문에서 완전히 명확하지 않은 것을 두려워합니다. 일치 할 고정 된 문자열 세트가 있다면 한 번에 모든 것을 할 수 있다면 연락을 사용하여 더 빠르고 읽을 수있을 것입니다. 예를 들어:

string faster = first + " " + second + " " + third + "; " + fourth;

string slower = new StringBuilder().Append(first)
                                   .Append(" ")
                                   .Append(second)
                                   .Append(" ")
                                   .Append(third)
                                   .Append("; ")
                                   .Append(fourth)
                                   .ToString();

또 다른 대안은 물론 형식 문자열을 사용하는 것입니다. 이것은 가장 느리지 만 가장 읽기 쉬울 수 있습니다.

 string readable = string.Format("{0} {1} {2}; {3}",
                                 first, second, third, fourth);

"매번 링크 추가"를 언급하는 질문의 일부는 해당 측면에 StringBuilder를 사용하는 것을 제안합니다. 자연스럽게 루프로 이어지는 것은 StringBuilder를 사용하여 더 효율적입니다 (중간 수에서 다수의 경우).

다른 팁

당신은 살펴 봐야합니다 Jon Skeet 의이 훌륭한 기사 문자열을 연결하는 것에 대해.

그렇습니다. 일반 문자열을 연결하는 데 비싸다 (실제로 다른 사람의 끝까지 끈에 부여). 문자열이 변경 될 때마다 .NET은 오래된 문자열을 떨어 뜨리고 새 값으로 새 문자열을 만듭니다. 불변의 대상입니다.

편집하다:

StringBuilder는주의해서 사용해야하며 다른 접근 방식과 마찬가지로 평가해야합니다. 때로는 두 개의 문자열이 함께있는 것이 더 효율적이며 사례별로 평가되어야합니다.

Atwood는 이와 관련된 흥미로운 기사를 가지고 있습니다.

웹 애플리케이션이나 WinForms 응용 프로그램에서 성능이 다른 이유는 무엇입니까?

StringBuilder를 사용하는 것은 메모리 및 객체 할당으로 인해 모범 사례의 문제입니다. 규칙은 코드를 구축하는 이유에 관계없이 적용됩니다.

많은 반복이있는 루프에서 문자열을 만드는 경우 StringBuilder를 사용하는 것이 좋습니다. 그렇지 않으면 문자열 연결이 최선의 방법입니다.

첫째, 여전히이 응용 프로그램을 작성하고 있습니까? 그렇다면 성능 튜닝을 중지하십시오! 둘째, 속도에 대한 정확성을 우선시하십시오. 명백한 이유로 장기적으로 가독성이 더 중요합니다. 셋째, 우리는 당신이 쓰고있는 정확한 상황과 코드를 알지 못합니다. 이 마이크로 최적화가 코드의 성능에 중요한지 여부는 실제로 조언 할 수 없습니다. 차이를 측정하십시오. Red Gate의 개미 프로파일 러를 적극 권장합니다.

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