elgio
(usa OpenSuSE)
Enviado em 28/01/2009 - 20:11h
Ora, eu não vi diferença significativa. É errado dizer que o diff só serve para txt. Ele compara binários TAMBÉM. Se ele não identificar o arquivo como TEXTO, apenas ele não irá imprimir as diferenças, apenas o status: se iguais ou diferentes. O diff tem tantos parâmetros que dá até para pedir que ele mostre as diferenças (por sua conta e risco, pois a tela ficará suja com caracteres binários). Logo, o diff pode ser usado tranquilamente.
A única "vantagem" que vi do cmp é que ele diz qual linha e qual byte houve a primeira diferença, mas não entendo como esta informação pode vir a ser útil em arquivos binários.
Em relação ao desempenho, par dois arquivos IDÊNTICOS de 600M o cmp levou a melhor:
$ time diff lixo1.bin lixo2.bin
real 0m1.487s
user 0m1.040s
sys 0m0.432s
$time cmp lixo1.bin lixo2.bin
real 0m1.328s
user 0m0.836s
sys 0m0.476s
Mas quando um dos arquivos tem uma diferença no FIM o diff levou a melhor:
$time cmp lixo1.bin lixo3.bin
cmp: Fim de arquivo (EOF) em lixo1.bin
real 0m1.309s
user 0m0.876s
sys 0m0.428s
$ time diff lixo1.bin lixo3.bin
Os arquivos lixo1.bin e lixo3.bin são diferentes
real 0m0.005s
user 0m0.000s
sys 0m0.004s
E olha a ENORME DIFERENÇA!
(neste caso o lixo3.bin é um byte maior. Acho que o diff usou isto para dizer que são diferentes sem precisar percorrer o arquivo. Seria inteligente...)