Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 19 Ottobre 2016, 12:43:12

Titolo: creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: allegfede - 19 Ottobre 2016, 12:43:12
In alcune situazioni, mi serve di leggere e scrivere file di testo (e non solo) che vengono creati all'inizio del processo e cancellati alla fine del processo.
Mi chiedevo se ci potrebbero essere differenze sostanziali nell'accedere a file su disco o in ram.

potrei all'inizio del processo creare una cartella in ram con:
mount -t tmpfs -o size=500m tmpfs /mountpoint

scrivere e leggere i file creati nel mountpoint e poi smontarlo con:

umount /mountpoint

ma non so quanto il gioco valga la candela ....
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: vuott - 19 Ottobre 2016, 16:27:06
potrei all'inizio del processo creare una cartella in ram con:
mount -t tmpfs -o size=500m tmpfs /mountpoint

scrivere e leggere i file creati nel mountpoint e poi smontarlo con:

umount /mountpoint

...ma..... perché vuoi utilizzare quella riga con quei comandi per creare una cartella ?  (http://psnprofiles.com/forums/public/style_emoticons/default/hmm.gif)
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: allegfede - 20 Ottobre 2016, 11:07:15
l'idea e' di far scrivere un file di testo a ffmpeg (nel caso specifico il file delle statistiche di compressione che ffmpeg riempie man mano che codifica) e leggerlo da un altro thread (il programma principale in gambas).

Mi chiedevo se ha senso fare il tutto in ram o non cambia molto scrivere su disco fisico.

In alcune situazioni particolari, in cui ho controllo sul PC (device embedded che realizzo con raspberry), mi creo un piccolo ramdisc in fase d'installazione (per minimizzare le RW su memory card), ma in casi generici posso realizzare il tutto a run-time .....
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: vuott - 20 Ottobre 2016, 14:34:31
Scusa la mia totale impreparazione, ma ti domandavo perché non hai inteso usare le risorse di Gambas Mkdir( ) o Temp...
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: allegfede - 22 Ottobre 2016, 07:43:35
Scusa tu.  Nin sapevo di temp.  Ma dove la crea sta path?  Su disco o ram?  Dalla documentazione non si capisce.
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: vuott - 22 Ottobre 2016, 15:24:07
La funzione Temp restituisce semplicemente un percorso per i file temporanei.

http://www.gambas-it.org/wiki/index.php?title=Temp
https://lwn.net/Articles/499410/


In alcune situazioni, mi serve di leggere e scrivere file di testo (e non solo) che vengono creati all'inizio del processo e cancellati alla fine del processo.
Be'... a mio modesto avviso, se vuoi restare a livello di RAM:
- potresti usare una variabile globale di tipo String;
- se poi vuoi lavorarci come un array di valori di tipo carattere (Byte), puoi utilizzare i vettori di tipo Byte[ ], caricandoti i dati stringa con il metodo .FromString( );
- se vuoi lavorare i dati della stringa come con una variabile di tipo File, allora puoi utilizzare i Puntatori, le variabili Stream e le funzioni di Gambas di dereferenziazione per leggere i dati, nonché la funzione Memory Stream per scrivere nell'area puntata dal Puntatore.
Titolo: Re:creazione e lettura file su disco o ram, differenza prestazioni?
Inserito da: allegfede - 03 Novembre 2016, 11:49:02
tu hai ragione vuott.
Ma il file in questione e' FUORI del mio controllo. Lo crea e gestisce FFMPEG, ed io gli posso dire solo DOVE farlo (la path).

Quindi se farlo in memoria o meno dipende dalla partizione montata nel file system in ram o disco (o rete etc.)

Certo, accedendo alle API di ffmpeg potrei bypassare il problema, ma per ora mi accontento di come sta evolvendo il progetto dell'encoder batch.