ciao, ti premetto che non ho esperienza pratica con un albero binario di ricerca...
historyX ha scritto:
una ricerca in base ad n parametri
...ma questo non esclude già l'ipotesi B? Ovvero, come creare un albero binario quando la ricerca coinvolge più campi? Creeresti un albero per ciascun campo? Non so, mi sembra dispendioso.
Proverei invece ad usare PLINQ, se puoi parallelizzare il lavoro. Leggi questo articolo di Marco De Sanctis.
http://www.winfxitalia.com/articoli/netfx4/multithreading-parallelismo-p-3.aspx#title_1L'extension method .AsParallel() ti permette di "prepare" la tua lista per l'esecuzione multithread.
List<Customer> customers = GetCustomers();
var risultato = customers.AsParallel().Where(c=>{ /*tuo criterio di ricerca */ });
Se per esempio la tua macchina ha 4 core, la ricerca ti restituirà il risultato
grossomodo 4 volte più rapidamente di un semplice foreach che invece lavora in maniera seriale.
ciao,
Modificato da BrightSoul il 01 settembre 2011 21.34 -