PDA

Visualizza la versione completa : [*] Uso di Seek o scorrimento di file per individuare un'informazione


dail
31-10-2007, 08:32
Ciao a tutti
Presumiamo di avere un file molto grande sui 500 mb con all'interno moltissime righe...dunque vi spiego cosa devo fare...

Devo recuperare 30 righe da questo file, so la posizione(in byte ovviamente) di tutte e 30 le righe....secondo voi, è più veloce, fare un loop su tutto il file e contollare riga dopo riga, oppure è meglio fare di volta in volta utilizzare seek() per posizionarsi e poi read() per leggere la riga?

Come linguaggio di programmazione utilizzo python, mi interessa comunque "il concetto", poi per il linguaggio credo sia indifferente.

grazie :ciauz:

mondobimbi
31-10-2007, 10:45
perché ti viene questo dubbio? se conosci l'offset della riga desiderata l'accesso random è sicuramente il più veloce.

ciao
sergio

dail
31-10-2007, 10:50
Originariamente inviato da mondobimbi
perché ti viene questo dubbio? se conosci l'offset della riga desiderata l'accesso random è sicuramente il più veloce.

ciao
sergio

mi viene questo dubbio solamente perchè se sono tante righe?
cioè ammettiamo che ne dovessi prendere 1000 (conosco sempre la posizione in byte di ogni riga)...secondo voi fare 1000 seek() è più conveniente rispetto a scorrere riga dopo riga?

secondo me si perchè a livello di kernel credo che la seek() sia soltando un addizione, per posizionarsi al punto giusto, no?

grazie :ciauz:

sickboy121
31-10-2007, 11:13
Io penso che se conosci l'offset è molto più veloce usare seek piuttosto che scorrere l'intero file.
Considera che se devi prendere 1000 righe, fai mille spostamenti, se devi scorrere tutto il file, ad esempio di 5000 righe, quanti read fai???

dail
31-10-2007, 11:25
sisi appunto per questo...

ottimo!!!

grazie :ciauz:

mondobimbi
31-10-2007, 11:34
l'accesso random è il più veloce, senza dubbio.
ciao
sergio

dail
31-10-2007, 13:00
Originariamente inviato da mondobimbi
l'accesso random è il più veloce, senza dubbio.
ciao
sergio

un parere in più è sempre meglio..... si perchè parlando a livello di "carico" del kernel alla fine non si tratta solo di una addizione? ....per spostare il cursore più avanti?

grazie

billiejoex
31-10-2007, 13:38
Ciao a tutti
Presumiamo di avere un file molto grande sui 500 mb con all'interno moltissime righe...dunque vi spiego cosa devo fare...

Devo recuperare 30 righe da questo file, so la posizione(in byte ovviamente) di tutte e 30 le righe....secondo voi, è più veloce, fare un loop su tutto il file e contollare riga dopo riga, oppure è meglio fare di volta in volta utilizzare seek() per posizionarsi e poi read() per leggere la riga?

Come linguaggio di programmazione utilizzo python, mi interessa comunque "il concetto", poi per il linguaggio credo sia indifferente.

grazie

Ovviamente effettuare 30 seek() è più conveniente che effettuare migliaia (milioni?) di read().

dail
31-10-2007, 13:47
Originariamente inviato da billiejoex
Ovviamente effettuare 30 seek() è più conveniente che effettuare migliaia (milioni?) di read().

si si infatti.... grazie comunque del parere

:ciauz:

Loading