Lentezza listbox

Discussioni generali sulla programmazione in LabVIEW, domande, problemi e soluzioni.

Moderatore: ILVG mod

  • Advertisement

Lentezza listbox

Messaggioda Buddace » dom dic 17, 2017 12:26 am

Uso il codice allegato nell'immagine per popolare una listbox...ma ho problemi di lentezza.
E' un problema della mia implementazione ?
Immagine
Buddace
Utente Attivo
Utente  Attivo
 
Messaggi: 78
Iscritto il: mer lug 11, 2007 12:03 pm

Advertisement

Re: Lentezza listbox

Messaggioda aris » mer dic 20, 2017 5:11 pm

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
E' sempre colpa di una massa.....e se non è quella è un if!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 645
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: Lentezza listbox

Messaggioda Buddace » mer dic 20, 2017 8:58 pm

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
Utente  Attivo
 
Messaggi: 78
Iscritto il: mer lug 11, 2007 12:03 pm

Re: Lentezza listbox

Messaggioda Buddace » mer dic 20, 2017 9:14 pm

Trovato:https://forums.ni.com/t5/Example-Programs/How-to-Disable-Enable-Front-Panel-Updates/ta-p/3530344
Buddace
Utente Attivo
Utente  Attivo
 
Messaggi: 78
Iscritto il: mer lug 11, 2007 12:03 pm

Re: Lentezza listbox

Messaggioda aris » gio dic 21, 2017 12:29 pm

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
E' sempre colpa di una massa.....e se non è quella è un if!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 645
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: Lentezza listbox

Messaggioda Buddace » sab gen 06, 2018 1:04 am

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
Utente  Attivo
 
Messaggi: 78
Iscritto il: mer lug 11, 2007 12:03 pm

Re: Lentezza listbox

Messaggioda aris » lun gen 08, 2018 11:26 am

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!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 645
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: Lentezza listbox

Messaggioda nicola » dom mar 11, 2018 7:59 am

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.
Allegati
Defer Panel.png
Nicola |ILVG STAFF

Bytelabs.it
Avatar utente
nicola
Moderatore
 
Messaggi: 1525
Iscritto il: gio gen 08, 2004 3:30 pm
Località: Ferrara



  • Advertisement

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti

cron

Pannello di Controllo Utente

Login

Advertisement

Chi c’è in linea

In totale ci sono 6 utenti connessi :: 0 iscritti, 0 nascosti e 6 ospiti (basato sugli utenti attivi negli ultimi 5 minuti)
Record di utenti connessi: 119 registrato il dom mar 31, 2013 11:39 pm

Visitano il forum: Nessuno e 6 ospiti