Ho questo codice, che funziona bene, ma è lento su dataset di grandi dimensioni.può migliorare il mio codice dall'uso di LINQ?
Mi piacerebbe sapere dagli esperti se questo codice potrebbe trarre vantaggio dall'uso di Linq o da un altro metodo e, in caso affermativo, come?
Dim array_of_strings As String()
' now I add strings to my array, these come from external file(s).
' This does not take long
' Throughout the execution of my program, I need to validate millions
' of other strings.
Dim search_string As String
Dim indx As Integer
' So we get million of situation like this, where I need to find out
' where in the array I can find a duplicate of this exact string
search_string = "the_string_search_for"
indx = array_of_strings.ToList().IndexOf(search_string)
Ognuna delle stringhe nel mio array è univoca, senza duplicati.
Questo funziona abbastanza bene, ma come ho detto, troppo lento per i set di dati più grandi. Sto eseguendo questa query milioni di volte. Attualmente ci vogliono circa 1 minuto per un milione di query, ma questo è troppo lento per i miei gusti.
Perché stai chiamando 'ToList()'? Dovresti essere in grado di fare semplicemente 'indx = array_of_strings.IndexOf (search_string)'. –
In ogni caso se vuoi vedere dove il tuo codice è lento prendi un profiler decente e misuralo. Linq non ha lo scopo di migliorare le prestazioni, ma ha lo scopo di migliorare la produttività riducendo il numero di loop da codificare. –
creazione di una lista temporanea "milioni di volte" - forse dovrebbe essere una lista? – Plutonix