Searching veloce

di il
4 risposte

Searching veloce

Salve, sono inesperto uomo di 69 anni e cerco aiuto.
Per il mio hobby statistico ho un file .txt che contiene circa 35 max 60 miliardi di catene a 5 numeri (max 400) del tipo:
115 99 213 316 398
223 241 327 166 45
..........................
..........................
313 278 277 166 45

Devo controllare se 4 oppure 5 numeri di una mia data catena esistono nel file ed in quale posizione sta nel file la catena contenente i miei numeri.
esempio di una mia catena: 211 313 145 355 366
La mia catena cambia spesso e devo sempre trovare la nuova posizione nel file.
Mi serve un algoritmo moderno e veloce in grado di accelerare i tempi che attualmente con un mio vecchio programma in Basic sono lunghissimi.
Ho un Pc con 1 giga di ram ma se devo comprare un nuovo pc vorrei sapere che tipo comprare e con quali caratterstiche per aumentare la velocità.
Grazie al buon uomo che mi vorrà rispondere
Peppos

4 Risposte

  • Re: Searching veloce

    Scusami,
    ma non mi è chiaro: il file contiene al massimo 400 serie di 5 numeri ?
  • Re: Searching veloce

    Grazie per la risposta.
    Il mio hobby è la semiologia degli antichi linguaggi. Associo ai numeri ricercati alcune parole alfabetiche. (non ridete, prego)
    I numeri miei sono da 1 a 400, Adesso ho ristretto da 1 a 111. Perchè sono generati random (RND= 111).
    Il problema adesso è più semplice. Il programma deve generare un array max 20.000 seriazioni di 5 numeri o 6 numeri da 1 a 111, esempio:
    3 99 100 108 110 111 (in ordine crescente)
    .....................
    sono circa 20.000 oppure 10.000 oppure 5000 fino ad un minimo di 500
    dò poi 5 oppure 6 seriazioni mie del tipo:
    36 98 103 105 110 111
    12 56 91 95 96 98 103
    ..........................
    ...........................
    24 57 89 90 91 93
    78 79 90 99 100 104
    e chiedo di controllare se nell'array ci sono 2 oppure 3 oppure 4 oppure 5 oppure 6 o tutti i miei numeri dati
    (fa il primo confronto), se non trova un array con la prima condizione, deve distruggerlo e generarne un altro. Quando lo ha trovato con la mia condizione, deve vedere se nella posizione + 1 trovata vi sono i numeri della mia seconda seriazione e così di seguito fino alla sesta catena mia. In definitiva deve trovare un array che soddisfi tutte le condizioni e darmi le posizioni di seguito nell'array delle mie 5 o 6 catene. L'array per il mio studio deve essere trasformato in file .TXT
    Con la mia esperienza credo che bisognerà generare almeno 30 fino a 500 miliardi di seriazioni e fare tutti questi controlli.
    Con un mio vecchio programma di basic ottengo qualche risultato ma impiega alcune ore (certe volte 7 , certe volte 26 ore)
    Ho un intel core quad, ma ho solo guadagnato qualche ora. Mi hanno detto che bisognerebbe farlo con i thread, ma non ho esperienza. Mi hanno detto con delphi potrebbe essere più veloce. Non so.Prima io generavo dei files lunghissimi e poi facevo la ricerca, oggi invece con gli array in memoria, guadagno abbastanza tempo, ma sono sempre tempi biblici.
    Grazie per la pazienza e grazie di qualche consiglio. Il mio hobby anche ti ringrazia
    Giuseppe Peppos
  • Re: Searching veloce

    E' un problema molto interessante dal punto di vista informatico.

    Sinceramente non ho ben capito a cosa ti serve, ma come informatico è un esercizio interessante.

    Comunque se stai utilizzando visual basic, poiché è compilato, non ci dovrebbero essere tantissime differenze con delphi, tuttavia sarebbe opportuno provare a convertire il sorgente da basic a delphi e fare una prova.

    Presumo che il programma che hai in basic non sia molto complesso.

    Se vuoi ti posso aiutare.
  • Re: Searching veloce

    BUONASERA, SEMPRE GRAZIE PER LA CORTESIA e per la risposta.
    Il mio programma che uso attualmente è in BBC Basic Russell, che è per me molto semplice, rassomiglia al qbasic ma è più moderno. Se Vuoi ti mando il listato e qualche ulteriore informazione. Poi ne ho fatto fare uno da mio nipote che è in Java: ambedue sono superlentissimi. In java, naturalmente è più veloce, ma sempre lentissimo.
    Ne ho parlato con molti amici ma la totalità ci ha rinunciato perchè dicono che ci vorrebbe uno studio sui trhead. Soltanto a trhead, dicono si può accelerare. O con un supercomputer. Io, non lo so fare Ho il quad Intel core, ma i risultati, come velocità, sono 1 a 3 rispetto ad un normale pentium. Dove posso mandare il listato ed i programmi in Java?
    Grazie per l'attenzione e la cortesia
    Giuseppe Villamaina
Devi accedere o registrarti per scrivere nel forum
4 risposte