>  기사  >  백엔드 개발  >  C# 문자열 작업 - 가비지 수집 압력 감소

C# 문자열 작업 - 가비지 수집 압력 감소

黄舟
黄舟원래의
2017-02-13 11:59:031586검색

C# 성능 최적화 세부 정보

1. string.Empty를 사용하여 빈 문자열 변수에 초기 값 할당


  • String.Empty는 참조이고 ""는 구체적인 구현입니다

    string filter=“”;//不建议
     
    string filter=string.Empty; //建议

2. 빈 문자열을 비교하려면 str.Length == 0을 사용하세요.


  • 가장 빠른 방법: if (str.Length == 0)

  • 두 번째: if (str == String.Empty) 또는 if (str == "")


3. 불필요한 문자열 ToUpper 및 ToLower 작업을 피하세요

  • ToUpper 및 ToLower와 같은 메서드는 문자열 쌍을 다시 생성합니다

  • String.Compare는 문자열 대소문자를 무시할 수 있습니다

    //不推荐的写法
    if(s1.ToUpper()==s2.ToUpper()) …;
    //推荐的写法
    if(String.Compare( s1, s2, true ) == 0) …;

4. 문자열 접합 작업을 위해 StringBuilder를 능숙하게 사용하십시오.


  • 더 긴 문자열을 구성하려는 경우, 특히 문자열인 경우 10번 이상(경험치) 스플라이스된 경우 문자열 스플라이싱 작업에는 StringBuilder를 사용해야 합니다.

    [object Object]

5. StringBuilder 생성 시 초기 크기를 지정해야 합니다.


  • 기본 초기 크기는 16입니다. 이를 초과하면 크기를 조정하고 GC 압력을 높여야 합니다. 경험적 값을 기반으로 초기 크기를 지정하는 것이 좋습니다.

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10; i++)
    {
       sb.Append(i);
    }
    string s = sb.ToString();
    //建议修改为
    StringBuilder sb = new StringBuilder(256);
    for (int i = 0; i < 10; i++)
    {
       sb.Append(i);
    }
    string s = sb.ToString();


6. StringBuilder 남용을 피하세요


  • str1+str2+str3+str4와 같은 문자열 연결 작업은 StringBuilder보다 더 효율적인 String.Concat(str1, str2, str3, str4)로 컴파일됩니다. String.Concat은 문자열 길이를 한 번에 결정하며, StringBuilder는 문자열 개체를 여러 번 생성하는 데 적합한 크기 조정을 수행해야 합니다.


7. .Length=0

을 직접 설정하여 StringBuilder를 초기화합니다.

  • 실험 결과에 따르면 동일한 StringBuilder 객체를 여러 번 사용할 경우 .Length=0을 직접 설정하는 것이 초기화가 가장 빠릅니다.

    StringBuiler sb = new StringBuilder(256);
      ......
    sb.Remove(0, sb.Length); //不建议
    sb.Length = 0; //建议


8. StringBuilder가 차지하는 메모리를 해제하는 데 .Length=0을 사용하지 마세요

아아앙


9.계속


위 내용은 C# 문자열 연산입니다. 가비지 수집 부담을 줄여주는 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.