내 문제의 일부 기사를 찾으려고했지만 관련성이 있거나 내 응용 프로그램에 적합한 내용을 찾지 못했습니다. 여기에 내 문제가 있습니다 :C# 대용량 데이터 목록을 신속하게 처리하는 방법
(> 20,000) 개의 항목이 두 개 있습니다.
각 목록의 각 항목을 반대 목록의 모든 항목과 대조해야합니다.
이 같은의 구현 :
foreach(var item1 in List1)
{
foreach(var item2 in List2)
{
// Check item 1 against item 2.
// Check item 2 against item 1.
}
}
때문에 확인을 위해 수행 된 작업의 매우 느리고 사용할 수 없습니다.
이렇게 많은 수의 항목을 처리하는 효율적인 방법이 있습니까?
내가 제공 할 수있는 정보가 더 있으면 알려 주시기 바랍니다. 도움/의견을 보내 주셔서 감사합니다.
나는 C# .NET을 3.5
편집을 사용하고 있습니다 : 저를 시도하고 간단한 방법으로 검사를 설명해 보자.
item1과 item2는 경로 지정 시스템의 일부입니다. item1과 item2는 N 개의 다른 항목으로 연결됩니다. item1이 item2에 연결되어 있는지 확인하고 item2가 item1에 연결되어 있는지 확인합니다. item1 -> item2 인 경우 item2 -> item1이라고 가정 할 수 없습니다. 따라서 두 가지 검사가 모두 필요합니다.
데이터베이스에는 item1 -> item2 및 if/how item2 -> item1의 정보가 포함되어 있습니다. 수표 안에는 수표를 보내는 서비스에 대한 명명 된 파이프 호출이 있습니다. 서비스는 모든 경로 검사를 수행하고 item1 -> item2 등을 반환합니다.
데이터의 큰 코퍼스가 있고 믹스에 데이터베이스가있는 경우 모든 데이터를 반복하기 전에 데이터베이스에서 일부 사전 필터링을 수행 할 수 있습니까? – 48klocs
목록에 대한 자세한 정보를 제공해주십시오. 고유 한 값입니까? 그렇다면 해시 세트를 사용해야합니다. 프레임 워크 해시 셋 구현에는 효율적인 세트 비교 연산이 있습니다. –
논리적으로 당신은 일종의 "조인"을하고 있습니다. 그런 식으로 DB에 내장 된 메커니즘 (및 최적화)을 사용하여 구현해야합니다 ... –