Lentezza listbox
Moderatore: ILVG mod
-
- Advertisement
8 messaggi
• Pagina 1 di 1
Lentezza listbox
Uso il codice allegato nell'immagine per popolare una listbox...ma ho problemi di lentezza.
E' un problema della mia implementazione ?

E' un problema della mia implementazione ?

- Buddace
- Utente Attivo
- Messaggi: 78
- Iscritto il: mer lug 11, 2007 12:03 pm
Advertisement
Re: Lentezza listbox
Come prima cosa, eliminerei il for in cui hai messo la conversione in stringa.
Secondo passo potrebbe essere disabilitare l'aggiornamento del front panel mentre aggiorni la lista.
Aris
Secondo passo potrebbe essere disabilitare l'aggiornamento del front panel mentre aggiorni la lista.
Aris
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: Lentezza listbox
aris ha scritto:Secondo passo potrebbe essere disabilitare l'aggiornamento del front panel mentre aggiorni la lista.
Grazie ma come si fa ?
- Buddace
- Utente Attivo
- Messaggi: 78
- Iscritto il: mer lug 11, 2007 12:03 pm
Re: Lentezza listbox
Trovato:https://forums.ni.com/t5/Example-Programs/How-to-Disable-Enable-Front-Panel-Updates/ta-p/3530344
- Buddace
- Utente Attivo
- Messaggi: 78
- Iscritto il: mer lug 11, 2007 12:03 pm
Re: Lentezza listbox
Esatto, scusa, davo per scontato che lo sapessi.
Ad ogni modo, credo che nessuna delle due soluzioni ti porti grandi benefici, se cosi fosse (non so quanti dati hai in coda), potresti pensare di accodare i valori gia come stringa oppure crearti una seconda coda in cui metterli ed utilizzare direttamente quella per visualizzare i dati nella listbox.
Aris
Ad ogni modo, credo che nessuna delle due soluzioni ti porti grandi benefici, se cosi fosse (non so quanti dati hai in coda), potresti pensare di accodare i valori gia come stringa oppure crearti una seconda coda in cui metterli ed utilizzare direttamente quella per visualizzare i dati nella listbox.
Aris
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: Lentezza listbox
aris ha scritto:Esatto, scusa, davo per scontato che lo sapessi.
Ad ogni modo, credo che nessuna delle due soluzioni ti porti grandi benefici, se cosi fosse (non so quanti dati hai in coda), potresti pensare di accodare i valori gia come stringa oppure crearti una seconda coda in cui metterli ed utilizzare direttamente quella per visualizzare i dati nella listbox.
Aris
Niente da fare.
Con l'inserimento dei dati nella listbox la coda si riempie ad una velocità incredibile, se invece disabilito la parte relativa alla listbox lasciando ad esempio il ciclo prima la coda rimane vuota. Ne deduco che è la listobox ad essere lenta mi chiedo se ci sia un altro modo per inserire elementi oppure se ci sia un altro oggetto di labview più performante.
- Buddace
- Utente Attivo
- Messaggi: 78
- Iscritto il: mer lug 11, 2007 12:03 pm
Re: Lentezza listbox
non credo sia tanto l'inserimento in listbox, quanto la conversione numero/stringa a rallentarti l'esecuzione.
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: Lentezza listbox
Ci sono due possibilità oltre quella di eliminare il for per la conversione.
Una soluzione molto usata con i tree e in genere dove ci sono controlli molto lunghi da aggiornare è quella di mettere in pausa l'aggiornamento del panel fintanto che non hai eseguito l'aggiornamento del controllo, utilizzando la propietà DeferPanelUodates.
La seconda è piu che altro un dubbio, non è che la pausa è dovuta al fatto che non arrivano dati in coda e quindi il dequeue rimane in attesa perchè non avendo messo nulla sul timeout(-1) rimane in attesa?
In questo caso ti conviene se il codice dovesse fare qualcos'altro anche se non riceve i dati, mettere un timeout collegato ad un case, se riceve dati esegue aggiornamento listbox, altrimenti nel caso timeout non fa nulla ma procede con il codice successivo.
Una soluzione molto usata con i tree e in genere dove ci sono controlli molto lunghi da aggiornare è quella di mettere in pausa l'aggiornamento del panel fintanto che non hai eseguito l'aggiornamento del controllo, utilizzando la propietà DeferPanelUodates.
La seconda è piu che altro un dubbio, non è che la pausa è dovuta al fatto che non arrivano dati in coda e quindi il dequeue rimane in attesa perchè non avendo messo nulla sul timeout(-1) rimane in attesa?
In questo caso ti conviene se il codice dovesse fare qualcos'altro anche se non riceve i dati, mettere un timeout collegato ad un case, se riceve dati esegue aggiornamento listbox, altrimenti nel caso timeout non fa nulla ma procede con il codice successivo.
-
nicola - Moderatore
- Messaggi: 1525
- Iscritto il: gio gen 08, 2004 3:30 pm
- Località: Ferrara
8 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite