Modo efficiente nel confrontare due liste

0

Ho creato due elenchi di oggetti: Uno è record da un xml e l'altro è record dal database.

La regola è controllare se il record da un xml esiste nel database quindi escludere.

Ho pensato a due opzioni:

Il primo consiste nel fare un ciclo dell'elenco dei record da un xml e per ogni controllo del record se l'ID esiste nel database.

Il secondo è la creazione di un elenco di oggetti da un xml e un elenco di oggetti dal database. Quindi confronta i due elenchi e ottieni il risultato.

Quale è efficiente? Sto pensando alle seconde opzioni perché invece di eseguire il ciclo e interrogare il record, ogni volta, se esistesse nel database, perché non metterli negli elenchi e confrontarli usando linq o comparatore di uguaglianza.

    
posta rpm07 04.02.2016 - 06:22
fonte

1 risposta

4

Which one is efficient? dipende dalla tua definizione di efficiente e dai tuoi dati:

Che tipo di efficienza intendi: "meno tempo di elaborazione", "meno consumo di memoria", "meno ore necessarie per l'implementazione o la manutenzione"?

Suppongo tu intenda "meno tempo di elaborazione".

La risposta dipende da:

  • se il database contiene 1 milione di righe e XML contiene solo due righe, il primo "controllo del database let" è più efficiente.
  • se database e XML hanno entrambi molti elementi, la seconda soluzione "in memoria" può essere più efficiente se i dati sono ordinati correttamente.

Nel 99,99% di tutti i casi "l'efficienza del tempo di elaborazione non è rilevante" a condizione che il codice non venga eseguito più di 10 volte al secondo. C'è una grande differenza se la versione 2 ha bisogno di 0,01 secondi mentre la versione 1 ha bisogno di 0,2 secondi?

Se io dovessi implementare la codifica più semplice come "lasciare il controllo del database" finché non si misura realmente che si tratta di un collo di bottiglia delle prestazioni. Tieni presente l' ottimizzazione prematura

    
risposta data 04.02.2016 - 12:33
fonte

Leggi altre domande sui tag