2017-04-02 3 views
0

나는 성능 그것은 CPU의 대부분이 같이 IndexOf 기능 여기IndexOf 선택을 조정할 수 있습니까?

enter image description here

기능에 의해 사용되는 것으로 나타났다 오랜 시간

에 대한 응용 프로그램을 프로파일 링이

public static string func_Fix_Google_Source(string srSource) 
{ 
    int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">"); 
    return srSource.Substring(irIndex); 
} 

문자열의 길이가 중요할까요? 내가 찾는 문자열 길이를 줄일 수 있습니다

답변

2

하위 문자열 검색이 병목 현상이 될 경우 KMP과 같은 고급 알고리즘으로 전환 할 수 있습니다.

"거짓 긍정 (false positive)"이 많은 경우 기본 문자열 검색이 매우 비쌉니다.

<div id="... 

텍스트가 검색 중입니다.

일치 항목이 시작되지 않는 위치에서 위의 접두사가 발견 될 때마다 기본 알고리즘은 일치하지 않음을 확인하는 데 걸리는 횟수만큼 추적 한 다음 다음 위치로 이동합니다. 반대로 KMP는 이미 본 많은 문자를 건너 뛰고 효율성을 향상시킵니다.

+0

답안을 위해. 나는 기본적으로 C# doesnt 지원하고 코드 작성해야한다고 가정하고 있습니까? – MonsterMMORPG

+0

나는 생각했다. 해당 문자열에 가까운 시작 인덱스를 제공하면 최대 100 회까지 향상됩니다. – MonsterMMORPG

1

IndexOf (문자열) 오버로드는 현재 문화권을 사용하여 비교 작업을 수행합니다.

서지 검색을 수행하기 위해 StringComparision 오버로드를 사용하면 성능이 향상됩니다. 당신이하는 일에 따라 ~ 8x.

int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">", StringComparison.Ordinal); 
+0

wow i didnt this – MonsterMMORPG