Joe Duffy's Blog은 string.Substring
을 사용하는 것이 string.Split
보다 효율적이라는 것을 의미합니다.String.Split보다 String.Substring이 더 효율적입니까?
Substring
메서드가 새로운 문자열을 할당하지 않는다고 말하는지 또는 불필요한 할당을하지 않기 때문에 더 효율적인지 알 수 없습니다. 어떻게하면 더 효율적인지 예를 보여 주실 수 있습니까?
첫 번째 예제는 배열을 만든 다음 배열의 각 문자열을 처리하는 것으로 이해합니다.
string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}
는 어떻게 더 효율적 다음
string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
Process(substr, lastIndex, commaIndex);
lastIndex = commaIndex + 1;
그때 문자열을 처리 쉼표의 인덱스를 찾기 위해 String.IndexOf
을 사용하고 표시되는 내용. 나는 자신의 처리 중에 데이터를 추출하기 위해 String.Substring
을 사용하려고한다고 가정합니다. 아래 의견 중 하나는 그가 문자로 문자를 가져올 수 있다고 제안했습니다. 그는 숯을 배열 할 가능성이있는 다음 콤마를 칠 때까지 캐릭터를 당길 것입니까?
예 sting.Index of는 쉼표의 색인을 찾는 데 사용되지만가 s 프로세스 메소드에서는 하위 색인을 작성하여 해당 색인 내의 데이터를 추출해야합니다. 권리? –
나는 빗나가고있다 - 예제는 정말로 혼란 스럽다. – BrokenGlass
"String.Split과 String.Substring처럼 숨어있는 지뢰가있는 API가있다"는 것은'Substring '이 효율적이지 않다고 생각한다는 의미이다. 그리고 "String은 인덱서를 가지고 있으며 형식 보증이되어 있습니다. 따라서 최소한의 버퍼 오버런은 발생하지 않습니다"는 의미는 문자로 부분 문자열에 액세스하려는 의도가 있음을 의미합니다. 'Substring'을 사용합니다. – Blorgbeard