No meu entender, quanto mais comandos eu executar para obter uma saída desejada, mais o tempo de execução será necessário.
Vamos analisar isso:
time find /opt/platforms/ -name '*trading*cfg' | xargs grep SenderCompID | awk -F= '{print $2};
real 0m0.008s
user 0m0.000s
sys 0m0.000s
Qual é um ótimo tempo de execução.
Eu embelezo essa linha feia:
time find /opt/platforms/ -name '*trading*cfg' -exec grep SenderCompID {} \; | awk -F= '{print $2}'
real 0m0.076s
user 0m0.004s
sys 0m0.008s
E apesar de ter reduzido um pipe e usado o find -exec
, o tempo é um pouco mais longo.
Eu o levo ainda mais longe e uso apenas para encontrar, sem tubos:
time find /opt/platforms/ -name '*trading*cfg' -exec sed -n '/SenderCompID/s/.*=\(.*\)//p' {} \;
real 0m0.076s
user 0m0.008s
sys 0m0.012s
O resultado "pior".
Digamos que eu esteja em um dispositivo de rede montado, isso pode ser 10x no tempo e as pequenas diferenças seriam significativas.
Alguém pode explicar como o comando aparentemente mais eficiente leva mais tempo para ser executado?
Obrigado