2012-04-06 2 views
0

강하게 입력 된 버전을 사용하고 있었지만 충분히 유연하지 않은 문제가 발생했기 때문에 유연성을 제공했지만 성능이 떨어지는 AdvancedQuery.Luncene으로 전환했습니다. 낮은 수준의 쿼리 엔진이 카운터 파트 또는 적어도 동등한 것보다 빠르다고 생각했습니다. 누군가가 이것에 대해 밝힐 수 있습니까? LINQ 쿼리와 Advanced.LuceneQuery 간의 성능 차이가있는 이유는 무엇입니까?

watch = Stopwatch.StartNew(); 
     result = s.Query<Product>() 
      .Statistics(out stats) 
      .Where(x => x.HasPicture == true) 
      .ToArray(); 
watch.Stop(); 

시간 == HasPicture에 대한 쿼리를 실행 경과, 스티븐 감사 진정한 975

발견 제품의

총 수 : 412,352

watch = Stopwatch.StartNew(); 
result = s.Advanced.LuceneQuery<Product>("Products_Index") 
      .Statistics(out stats) 
      .Where("HasPicture:(True)") 
      .ToArray() 
      ; 

watch.Stop(); 

시간 쿼리를 실행 경과 Lucene과 함께 7065

총 수 찾은 제품 : 412352

답변

1

Itamar에게 감사드립니다.

Where 절은 WhereEquals를 사용하여 LuceneQuery를 사용할 때 문제가되었습니다.

result = s.Advanced.LuceneQuery<Product>("Products_Index") 
        .Statistics(out stats) 
        .WhereEquals("HasPicture", true) 
        .ToArray() 
        ; 
1

표준 성능 기준에서 벗어 났을 때 성능 저하를 선택하십시오. 즉시 사용 가능한 설정으로 시작하여 데이터를 수집하고, 측정하고, 린스하고 반복합니다. 용납 할 수없는 성능 저하가 관찰되면 관측에 따라 조치를 취한 다음 한 가지를 변경하고 데이터를 수집하고 측정하십시오. 그러면 OOB 설정이 먼저 응답됩니다.

+0

피터, 나는 주제에 대해 밝히고있다. –

관련 문제