광범위 한 StringBuilder.Append()
작업은 포인터를 사용하여 문자별로 문자열을 작성하기 위해 스레드의 스택에 할당 된 char[]
을 사용하여 최적화 할 수 있습니까?문자열 작성기의 성능 향상
unsafe
{
const Int32 width = 1024;
Char* msg = stackalloc Char[width];
Int32 index = 0;
property = Environment.MachineName;
for (Int32 i = 0; i < property.Length; i++)
msg[index++] = property[i];
return new String(msg, 0, width);
}
이는 결과적으로 매우 만족하지 StringBuilder
을 사용하는 것에 비해 약 25 % 개선을 제공한다.
무엇이 문제입니까? – Nuffin
@ Nuffin 음, 아마도 맨 처음 줄? 그냥 물음표가 필요합니다. 그러나이 질문은 두 번째 라인과 맞지 않는 것으로 보입니다. 아마도 OP는 [코드 검토] (http://codereview.stackexchange.com/)를 원할 것입니다. –
실험적으로 StringBuilder.Append를 사용하면 응용 프로그램의 병목 현상이 발생했으며 실제로 포인터와 안전하지 않은 코드 수준으로 내려와야한다고 측정 했습니까? 아니면 단호한 이유없이 CPU주기를 몇 번 절약하기 위해 조기에 시도하고 있습니까? –