Benvenuto nella nostra community, registra un account gratuito ADESSO!
Oltre 7000 persone hanno già registrato il loro account. Chiedi aiuto, conversa con aziende ed esperti del settore webhosting italiano.
Iscriviti subito! In meno di 2 minuti!




Risultati da 1 a 4 di 4
  1. #1
    etr
    etr non è collegato
    HTEnginer L'avatar di etr
    Data Registrazione
    Jun 2006
    Località
    Milano
    Messaggi
    803

    [VB6] Caricamento file in array troppo lento

    Ciao a tutti,

    ho questo problemone ...

    ho diversi file ognuno contentente circa 32000 righe che corrispondono a dei dati ogni minuto. Devo caricarli in diversi array differenziati per il tempo: mi spiego meglio

    Array1 = un file (ogni posizione dell'array, una riga)
    Array2 = 5 file (ogni posizione dell'array, 5 righe mediate)
    Array3 = 15 file (ogni posizione dell'array, 15 righe mediate)
    ecc. ecc.
    fino ad un array dove ogni posizione saranno 60 righe mediate => 60 files caricati.

    Così facendo ho un problema: il caricamento impiega 10 minuti ... minuti in cui il programma è "congelato".

    Pensavo di delegare il popolamento degli array ad un altro programma in modo da poter continuare a lavorare con l'applicazione principale mentre gli array vengono popolati. (impiegherei comunque 10 minuti ma l'utente non se ne accorgerebbe).

    I dati che mi servono all'inizio sono i primi caricati quindi dopo qualche secondo ...

    Pensavo di creare un'altra applicazione che mi leggesse i file e tramite l'API SendMessage inviasse il contenuto ad una casella di testo dell'applicazione principale che si preoccuperà di copiarne il contenuto nell'array corretto.

    Secondo voi è una soluzione percorribile ? Avete altri modi di trasferire dati tra applicazioni ?

    Grazie !



  2. #2
    Utente Moderatore L'avatar di TheVice
    Data Registrazione
    Aug 2006
    Località
    in una località nota in tutto il mondo
    Messaggi
    1,136

    Re: [VB6] Caricamento file in array troppo lento

    Pensato anche a farlo in maniera incrementale ? Ossia ogni minuto generi il file e mantieni la somma degli elementi corrispondenti. Quando son passati 5 minuti (generazione del 5° file) nell'array corrispondente metti la somma divisa per 5. In questo modo non hai l'overhead della lettura dei files, la somma è incrementale e ti serve fino al 60° file. Credo che eliminando i ritardi di I/O dovuti alla lettura dei files ogni volta, non dovresti avere latenze così drastiche.
    "Era una persona seria, passava il suo tempo giocando."
    (Lewis Carroll)


  3. #3
    etr
    etr non è collegato
    HTEnginer L'avatar di etr
    Data Registrazione
    Jun 2006
    Località
    Milano
    Messaggi
    803

    Re: [VB6] Caricamento file in array troppo lento

    Grazie per l'idea ma essendo i file sempre gli stessi, sono già "generati" e devo caricarli in un colpo solo ..

  4. #4
    Appassionato
    Data Registrazione
    Jul 2006
    Messaggi
    119

    Re: [VB6] Caricamento file in array troppo lento

    Citazione Originariamente Scritto da etr Visualizza Messaggio
    Ciao a tutti,

    ho questo problemone ...

    ho diversi file ognuno contentente circa 32000 righe che corrispondono a dei dati ogni minuto. Devo caricarli in diversi array differenziati per il tempo: mi spiego meglio

    Array1 = un file (ogni posizione dell'array, una riga)
    Array2 = 5 file (ogni posizione dell'array, 5 righe mediate)
    Array3 = 15 file (ogni posizione dell'array, 15 righe mediate)
    ecc. ecc.
    fino ad un array dove ogni posizione saranno 60 righe mediate => 60 files caricati.

    Così facendo ho un problema: il caricamento impiega 10 minuti ... minuti in cui il programma è "congelato".

    Pensavo di delegare il popolamento degli array ad un altro programma in modo da poter continuare a lavorare con l'applicazione principale mentre gli array vengono popolati. (impiegherei comunque 10 minuti ma l'utente non se ne accorgerebbe).

    I dati che mi servono all'inizio sono i primi caricati quindi dopo qualche secondo ...

    Pensavo di creare un'altra applicazione che mi leggesse i file e tramite l'API SendMessage inviasse il contenuto ad una casella di testo dell'applicazione principale che si preoccuperà di copiarne il contenuto nell'array corretto.

    Secondo voi è una soluzione percorribile ? Avete altri modi di trasferire dati tra applicazioni ?

    Grazie !
    La soluzione da te indicata a mio parere fa esplodere i tempi. Il collo di bottiglia è indubbiamente l'I/O...
    Se non hai problemi di consumo di memoria e presumendo che tutti i file siano testuali puoi provare a caricare tutti i file all'interno di stringhe in un colpo solo.
    Codice:
    lFileHandle = Freefile
    Open "nomefile" For Input As #lFileHandle
    sFile1 = Input(LOF(lFileHandle), lFileHandle)
    Close #1
    In questo modo il file viene caricato interamente ed in un sol colpo all'interno delle stringhe. A quel punto puoi lavorare sulle stringhe per tirar fuori le righe che ti interessano intercettando i CRLF.

    Altri Tip sono:
    • Non usare la funzione Split, è lentissima
    • Dichiara le variabili numeriche sempre con LONG, occupano di più ma non subisci la lentezza dell'allineamento a 32Bit per le variabili più piccole
    • Quando usi le funzioni che operano sulle stringhe (tipo Left, Mid etc) usa sempre le varianti con il dollaro finale (Left$, Mid$ etc), sono più veloci perché non fanno uso di Variant
    • Molto importante: gli array dinamici in VB sono lentissimi, ogni volta che conosci la lunghezza massima che un array può avere dichiaralo staticamente e portati dietro una variabile per sapere quanto ne hai usato, noterai un incremento di prestazioni strabiliante

Discussioni Simili

  1. SFTP troppo lento....
    Di lowell nel forum VPS - Virtual Private Server
    Risposte: 11
    Ultimo Messaggio: 04-10-2011, 16:41
  2. [Webserver] Carico CPU troppo elevato, sito lento!
    Di Final_Alpha nel forum Gestione Server Windows e Server Linux
    Risposte: 29
    Ultimo Messaggio: 07-11-2010, 13:29
  3. webhost4life.com - troppo lento secondo me...
    Di webbondo nel forum Shared e Managed Webhosting
    Risposte: 1
    Ultimo Messaggio: 11-11-2009, 19:00
  4. Hp, disk array a prezzi entry level
    Di Redazione HostingTalk nel forum Articoli e news su Webhosting e Servizi Internet
    Risposte: 0
    Ultimo Messaggio: 12-02-2008, 07:35
  5. phpbb.com down : raid array failure
    Di Ste nel forum L'OTInformatico
    Risposte: 16
    Ultimo Messaggio: 19-03-2007, 12:19

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Tag per Questa Discussione

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •