검색 기능이있는 (C#) 도구를 만들고 있습니다. 이 검색은 "ReSharper has or VS2013"과 같이 "어디에서나 이동"검색과 비슷합니다.중첩 된 위치 (LINQ) 절을 사용하여 배열 반복 최적화
검색 컨텍스트 전면까지의 모든 항목을 포함하는 문자열 배열이다
private string[] context; // contains thousands of elements
검색이 증가하고, 사용자가 제공하는 모든 새로운 입력 (문자)로 발생한다.
내가 확장 방법은 LINQ 사용하여 검색 구현 : "캘리포니아"에 대한 사용자 검색, 내가 검색 컨텍스트로 이전 결과를 사용하려고
// User searched for "c"
var input = "c";
var results = context.Where(s => s.Contains(input));
그러나이 원인을 (내가 생각을 ?) 중첩 된 Where 반복 및 매우 잘 실행되지 않습니다. 이 코드와 같은 것을 생각해보십시오.
// Cache these results.
var results = var results = context.Where(s => s.Contains(input));
// Next search uses the previous search results
var newResults = results.Where(s => s.Contains(input));
이 시나리오를 최적화하는 방법이 있습니까?
검색 할 때마다 IEnumerable을 배열로 변환하면 메모리 할당이 높아지고 잘못 실행됩니다.
당신은'ToList'과 중간 결과를 구체화 할 수있다. 하지만 매번'context'를 사용하는 것보다 훨씬 효율적입니까? –
은 ToArray보다 ToList가 좋습니다. –
당신은'ToArray'를 사용하지 않고 있습니까? 'ToList'는리스트가 큽니다. 더블링 알고리즘은 item-count보다 크거나 같은 크기를 찾고 배열은 올바른 크기를 가져야하므로 효율적입니다. 그러나 그것이 내 요점이 아니 었습니다. –