147 messaggi dal 23 aprile 2007
Ciao a tutti,
spiego la mia casistica:
ho una List di oggetti(il numero di elementi può variare dal 5000 ai circa 15000) su cui devo effettuare una ricerca in base ad n parametri, ragionandoci un po' ho trovato due alternative, ossia
A) tramite un foreach cercarmi il/i mio/miei item
B) caricare la collection in un albero binario di ricerca ed effettuare la ricerca sull'albero

non ho mai provato ad usare un albero, ma vorrei evitare di perder tempo nell'opzione B(che, ancora non fosse chiaro, preferisco :D ), per cui chiedo consigli e/o spunti.

Ciao a tutti
Sergio
5.610 messaggi dal 09 febbraio 2002
Contributi
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_1

L'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 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
147 messaggi dal 23 aprile 2007
Grazie per lo spunto, ottimo. Credo utilizzerò proprio il PLINQ.

:D

ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC