2010-06-17 2 views
5

Secondo la tua esperienza, qual è il miglior linguaggio di programmazione Web utilizzato per gestire l'ordinamento e il confronto di elenchi molto grandi (ovvero decine di migliaia di indirizzi e-mail)?Linguaggio di programmazione Web per elenchi molto grandi?

Sono più familiare con PHP. Penso che potrebbe portare a termine il lavoro, ma non sono sicuro di altre lingue e se ci potrebbe essere un pretendente scommettitore.

Grazie!

+1

Qual è l'applicazione che stai cercando di creare, che potrebbe influire sulla discussione. – Lazarus

+1

quanto spesso hai bisogno di ordinare questo elenco? A cosa serve? Cosa * altro * deve fare la lingua? – jalf

+0

L'intenzione dell'applicazione Web è gestire gli elenchi di posta elettronica. Ha solo bisogno di ordinare alfabeticamente. Non sarà un problema, posso solo ordinare la query MySQL. Ora che ci penso, immagino che tutto possa essere fatto a livello di database. Ad esempio, quando si confrontano due elenchi, posso semplicemente creare una vista nel database ... – littleK

risposta

15

Vorrei archiviare le e-mail in un database e utilizzare SQL per eseguire ordinamenti e ricerche. Questo è ciò per cui sono stati progettati i database, e avranno soluzioni intelligenti che supereranno qualsiasi cosa la maggior parte delle persone possa scrivere nel codice.

+3

Inoltre, se si intende programmare una soluzione, la maggior parte dei problemi relativi alle prestazioni arriverà agli algoritmi che si utilizzano per cercare/ordinare, che avranno un impatto molto più grande sulle prestazioni rispetto a quale lingua si utilizza. –

+0

Ha senso. Userò il database per eseguire la maggior parte delle operazioni. Grazie! – littleK

1

La lingua di solito non è importante TOO molto. Scegli quello con cui ti trovi più a tuo agio.

Il prodotto finale è modellato dal costruttore, non dagli strumenti.

16

È possibile eseguire l'ordinamento all'interno di un database? Sono progettati per fare ordinamento dinamico e confronto. Ti suggerirei di passare a un modello che consente al DB di gestire questo tipo di attività.

Se davvero non è possibile utilizzare un DB per qualche motivo, è necessario concentrarsi sugli algoritmi rispetto alle lingue. Scegli una lingua in base ad altri criteri (familiarità personale, supporta gli altri tuoi compiti, ha una community di supporto attiva, ecc. Ecc.) E trova il miglior algoritmo dato i capricci della lingua. Ad esempio, secondo alcune delle discussioni in https://stackoverflow.com/questions/309300/defend-php-convince-me-it-isnt-horrible, PHP ha prestazioni di ricorsione relativamente scarse.

Ma seriamente, utilizzare un database per questo.

+0

Userò il database, grazie! – littleK

2

Questo non dipende dal linguaggio di programmazione, dipende dalla logica, diciamo che si tratti di indici o schemi di tabelle e meccanismo di memorizzazione nella cache.

0

Il tuo più veloce sarebbe un cgi compilato.

+0

Upvoting this. Scrivere algoritmi efficienti in C darebbe il risultato migliore. Tuttavia, non è molto un linguaggio per la programmazione sul web. Ma per la ricerca e l'ordinamento, è di gran lunga il migliore (assumendo algoritmi corretti). Tuttavia, l'utilizzo di un database con qualsiasi altro linguaggio di programmazione Web reale in primo piano sarebbe molto più semplice e molto probabilmente risolverà il problema a sufficienza. – Kibbee

1

È anche possibile utilizzare un trie che è una struttura di dati dell'albero di prefisso - per l'ordinamento in memoria.

indirizzi e-mail hanno set di caratteri restrittivo (a-z, 0-9, _, . ecc), in modo che il trieNode avrebbe solo quei caratteri. Questo topcoder tutorial su trie è un buon punto di partenza se non sai già di trie.

Devi passare attraverso tutte le stringhe per costruire il trie.

Ricerca/Confronto richiede O (l) tempo in cui l è la lunghezza della stringa che si sta confrontando.

L'ordinamento richiede l'attraversamento di tutti i trieNode del trie tree utilizzando DFS (profondità prima ricerca) - O (| V | + | E |) tempo.

+0

Interessante. Daro un'occhiata, grazie! – littleK

+0

REgarding indirizzi e-mail e set di caratteri, vedere http://www.regular-expressions.info/email.html – RCIX