데이터베이스 쿼리 캐시로 사용되는 사전의 각 문자열 키에 대해 문자열 비교 연산의 성능을 최적화하려고합니다. 나는 C#을 병렬 기능을 사용하여 새로 온 사람과 가장 좋은 방법은 여러 문자열 비교가 '동시에'이 일어날 수 있도록 병렬 운전이 점을 변환하는 것입니다 무엇인지 궁금문자열 비교의 병렬 최적화
public void Clear(string tableName)
{
foreach (string key in cache.Keys.Where(key => key.IndexOf(tableName, StringComparison.Ordinal) >= 0).ToList())
{
cache.Remove(key);
}
}
: 같은 현재의 코드가 보인다. 캐시는 종종 상당히 커질 수 있으므로 Clear()
을 사용하면 유지 관리에 많은 비용이 소요될 수 있습니다.
"캐시가 종종 상당히 커질 수 있습니다"- 성능 병목 현상이 있는지 측정 했습니까? 그렇지 않은 경우 스레드를 도입해도 아무 것도 얻지 못하고 복잡성이 증가합니다. –
내가 처음이라면 코드를 병렬 처리하기보다는 캐싱 접근 방식을 최적화하는 것이 좋습니다. – Lazarus
필자는 성능 분석기를 실행하여이 방법 내에서, 특히 IndexOf() 내에서 샘플의 70 %가 사용되었다고합니다. 불행히도 기존 프레임 워크에서이 캐싱 접근 방식을 사용하도록 제한되어 있습니다. 캐시의 요소 수에 상한선을 부과하고 싶었지만 옵션이 아닙니다. – dahvyd