2009-10-30 2 views
0

금요일 리펙터 시간입니다!String/StringBuilder 어떤 볼륨을 다른 볼륨에 사용합니까

SQL 문을 생성하는 데 사용하는 개체가 있습니다.

oDb.From을 한 번 설정합니다. 그런 다음 메타 데이터를 결합하여 다시 전달할 때까지 메타 데이터에 시간이 지남에 따라 조인이 추가 될 수 있습니다.

그래서 Q입니다, 나는 그것이 sbFrom.Append로 교체하기 전에 구문 oDb.From + =을 보관하지 번 어떤 #()

인가 # 3, 4, 또는 15 배?

또는 정말로 콘텐츠 문제일까요? 그렇다면 무엇이 마법입니까? 엄지 손가락의

TIA

답변

1

StringBuilder 클래스는 당신이 거대한 문자열을 구성하고, 정말 너무 느린 것이 일반 문자열 연결을 사용하는 시나리오를 위해 설계되었습니다 http://www.codinghorror.com/blog/archives/001218.html

을 읽어보십시오.

당신이 다루는 문자열 길이의 종류가 실제로 어떤 차이를 만들지는 않을 것입니다 - 당신이 가장 편한 것을 사용하십시오.

4

완전히 비과학적인 규칙 : 나는 세 가지 요소를 통해 무엇을 위해 그것을 할 것 - 때문이 아니라 성능 향상의 것이 아니라 (희망) 좋은 습관 중.

0

나는 길이가 1-5MB를 초과 할 것으로 예상되는 내용이나 작은 덩어리로 많은 문자열을 할당하는 것으로 말하고 싶습니다.

+0

비슷한 유형의 인수를 고려하고있었습니다. 볼륨의 크기 종류 세계의 종류 -> 내 from 절에 3 ~ 4 개의 테이블 조인이 있고 대부분은 복합 열이므로 다음과 같은 코드가 있습니다. m_oConfig.DatabasePrefix + ". ["+ oDb [i] .TableName + "]." + oDb [i] .ColumnName + ..... 은 foreach 루프에서 일반적입니다. 결국 SQL 세그먼트의 길이는 두꺼워 질 수있는 where 절 외부에서 2000 chr() 미만이어야합니다. 각 세그먼트, FieldList, From, Where, Having, Gropby, Orderby가 oDB 오브젝트의 일부로 생성됩니다. – SteveO

1

String에 두 개 이상의 요소를 추가해야하는 경우 거의 항상 StringBuilder를 사용합니다. 두 개 이상을 추가하면 사람이 내 코드에 추가되기 시작하므로 피할 수 없을만큼 많이 있습니다 ... 그래서 StringBuilder 이미 그들을 위해있다).

0

총체적으로 비 과학적은 아닙니다. .NET 문자열 작성기가 실제로 5 개의 연결 후에 더 효율적으로되는 시점에 한 번씩 기사를 읽었습니다. 이것은 내가 보통 String Builder를 사용할 때이다.

또한이 문제와 관련하여 가독성이 실제로 작용한다고 생각하며, 두 경우 모두 문자열 형식을 선호합니다.

0

알고리즘의 연결 수가 O (n) 이상 증가하는 경우 StringBuilder를 사용합니다. 연결 수가 O (1) 인 경우 대부분의 시간 가독성은 아무런 영향을받지 않습니다 (문자열이 매우 큰 경우는 예외이며 그다지 자주 발생하지 않음).

또는 충분히 커질 수있는 문자열이 있다는 것을 알고있을 때. (100k 이상)

관련 문제