Experimentalia

Appunti raminghi

bash: head tail VS tail head

with one comment

In questi giorni ho dovuto selezionare delle stringhe all’interno di alcuni file in bash.

Sono sempre stato solito usare i comandi head e tail concatenati nel modo seguente:

head <nomefile> --lines <linea da selezionare> | tail 1

ma scartabellando in internet nel tentativo di trovare un comando simile mi sono trovato di fronte ad una versione diversa della mia solita pipe:

tail <nomefile> --lines +<linea da selezionare> | head 1

La domanda che mi sono posto è stata: quale delle due versioni è più efficiente?

Su Diecimila iterazioni su diecimila file diversi la media misurata con time su 50 prove è stata di 39,74 secondi a prova per la prima versioe e di 40,97 per la seconda versione.

Diecimila iterazioni del comando sullo stesso file, in modo da testare il comportamento anche con il supporto della cache ha mostrato uno scarto ancora più ridotto, 26,984 contro 27,183 secondi e quindi considererei le due versioni sostanzialmente equivalenti.

Un’altra valutazione da fare riguarda i tempi, paragonabili nel caso in cui la riga da selezionare si trovi in testa o in coda al file.
Mi sarei aspettato uno sbilanciamento a favore di una delle due soluzioni in un caso controbilanciato da una situazione contraria nel caso opposto ma così non è stato. Qualcuno ha idea del perché?

E questo, per ora, è tutto

Written by Eineki

marzo 31, 2008 a 1:47 am

Pubblicato su bash, esperimenti

Tagged with , , , , , ,

Una Risposta

Subscribe to comments with RSS.

  1. non sono troppo esperto, ma da quel che sono le mie esperienze posso presumere che, essendo in entrambi i casi i medesimi eseguibili e avendo come unica variabile la modalità di invocazione, il loro tempo di esecuzione è sempre lo stesso e l’unica differenza temporale è data dalla sequenza del pipe, perciò la dfferenza è minima e trascurabile.
    Posso sbagliarmi ovviamente🙂
    Mattia

    mattia

    febbraio 10, 2010 at 17:16 pm


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: