Italian B4J - Corretto uso della memoria e delle risorse

ivanomonti

Expert
Licensed User
Longtime User
ciao ragazzi, non ho mai VOLUTO affrontare il problema ma credo sia giusro farlo se si vuole fare qualcosa di utile e non dannoso,,, la mia lavagna funziona bene a parte alcune funzioni che non ho sistemato, ma vedevo un netto rallentamento su Windows surface e mi sono chiesto il perchè visto che entrambi hanno la stessa memoria, ossia 4 gb, a questo punto mi sono guardato su gestione attività i consumi e mi sono spaventato, tanto vero che ho rismontato il codice e riguardato molti frammenti del codice stesso.

Io credo nel mio lavoro ma so che non sono perfetto, mi chiedevo cosa si usa per verificare se il nostro software pur funzionando non sia un mangia risorse e memoria?

Prima e dopo

CPU > 30% ora < 2%
Memoria andava oltre i 600MB ora non supera i 130MB
Gestione disco ora 0 or 0,1% MB
Rete 0% in quanto e tutto locale

Prima mi usciva [MOLTO ALTA] GESTIONE RISORSE
Ora mi da [MOLTO BASSA] GESTIONE RISORSE

Ovviamente mi è costata una notte di ripristino per arrivare a ciò che oggi è, ma vorrei evitare la prossima volta avendo magari uno strumento di visualizzazione generale che mi dice che app non è un mangia risorse
 

LucaMs

Expert
Licensed User
Longtime User
Personalmente posso solo dirti che anch'io mi sono accorto che un paio di sw che ho sviluppato con b4j "succhiano" parecchio tempo CPU (fino a far avviare la ventola per surriscaldamento).

Ovviamente da codice non credo che possiamo evitarlo.
 

MarcoRome

Expert
Licensed User
Longtime User
Ciao Ivano. E allora inserisci qualche nota di cosa hai fatto in questo post... potrebbe essere utile a tutti.
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao Ivano. E allora inserisci qualche nota di cosa hai fatto in questo post... potrebbe essere utile a tutti.

Ho riguardato le loghiche togliendo frammenti di codice che ritenevo aggressivi, esempio la creazione dei contexmenu dinamici per ogni oggetto in lavagna facendo cicli su cicli, esempio 100 schede sono circa 100 contextmenu, ad ogni contexmenu due clicli per creare liste dinamiche associates e dissociate, in parole povere legge il database e mi crea una serie di menu aggiuntivi di 100 voci + altro menu di tot voci a secondo di quante schede associaci (non e semplice da spiegare) provo ad immaginare quando le schede sono oltre un migliaio :-(

altra cosa, io disegno tutto a codice, quindi creo e distruggo ogni volta e qui devo dire (pigrizia), anche in questo caso creo sempre da codice ma senza più distruggere (vale dire creare una sola volta ciò che mi serve, ogni pannello e composto da oggetti, liste, ecc ecc, quindi ricreare ogni volta e distruggere comporta un botto di lavoro alla cpu

riguardato le logiche ed alcune senza senso hahahah (ovvio scritte da me) con giri stupidi che non servivano (la notte porta sonno), mi manca da capire le ultime modifiche sul codice che non e mio ma preso nel forum, li capire se snellire i processi, di cui FDFBox, Video, Image, ma quest'ultimo e poca roba.

In altre parole, ci vuole molto ordine ed evitare ridondanze inutili che purtroppo si fanno perchè nel disordine si fa prima rifare una variabile o un metodo in più, il codice si deve snellire e ridurre le righe di comando ( sono passato da oltre 2000 a 1000 (esempio)), strutturare bene le classi e non aver paura di farne invece di scrivere km di codice dentro chissà dove (io) hahahahah
 
Last edited:

ivanomonti

Expert
Licensed User
Longtime User
Non è così ovvio, a dire il vero; devo guardare quale possa essere il motivo (pigrizia), potrebbe essere un eccessivo utilizzo della memoria centrale (benché sia 8GB).

Questo è vero, ne hai allora non vedi il problema e questo fa si che poi installano e bum (lentezza o muore)
 

ivanomonti

Expert
Licensed User
Longtime User
fino ad ora vedo un buon uso memoria ;-), ora passo ad altre implementazioni,,, la non ho ricevuto risposta per questo quesito... https://www.b4x.com/android/forum/threads/b4j-videoview.116490/

Avrei bisogno di alcune idee, plase

2020-04-19_170201.png
 
Top