Comparando Tempos de Execução de Diferentes Comandos
Agora que entendemos como usar o comando time e interpretar sua saída, vamos comparar os tempos de execução de diferentes comandos para entender suas características de desempenho.
Primeiro, vamos criar um script intensivo em I/O que lê e grava dados:
echo '#!/bin/bash' > ~/project/io_intensive.sh
echo 'for i in {1..10}; do' >> ~/project/io_intensive.sh
echo ' cat /etc/passwd > ~/project/temp_file_$i.txt' >> ~/project/io_intensive.sh
echo ' cat ~/project/temp_file_$i.txt > /dev/null' >> ~/project/io_intensive.sh
echo 'done' >> ~/project/io_intensive.sh
echo 'rm ~/project/temp_file_*.txt' >> ~/project/io_intensive.sh
echo 'echo "I/O operations complete"' >> ~/project/io_intensive.sh
Torne o script executável:
chmod +x ~/project/io_intensive.sh
Agora, vamos cronometrar este script intensivo em I/O:
time ~/project/io_intensive.sh
Você deve ver uma saída semelhante a esta:
I/O operations complete
~/project/io_intensive.sh 0.01s user 0.00s system 96% cpu 0.014 total
Observe que o tempo system agora é maior em relação ao tempo user em comparação com nosso script intensivo em CPU. Isso ocorre porque as operações de I/O de arquivo exigem chamadas de sistema, que são executadas no modo kernel. A alta porcentagem de CPU (96%) indica que o sistema estava ativamente trabalhando na maior parte do tempo durante a execução.
Vamos também cronometrar um comando Linux comum que pesquisa padrões de texto:
time grep -r "root" /etc
Este comando pesquisa recursivamente a palavra "root" em todos os arquivos no diretório /etc. A saída pode ser semelhante a:
[many matches shown here]
grep -r "root" /etc 0.18s user 0.08s system 99% cpu 0.259 total
Agora, vamos comparar todos os três comandos que cronometramos:
simple_echo.sh: Execução muito rápida (0.001s total), tempo mínimo de CPU e sistema.
cpu_intensive.sh: Execução mais longa (2.335s total), principalmente tempo de CPU do usuário (2.10s).
io_intensive.sh: Tempo de execução moderado (0.014s total), equilibrado entre o tempo do usuário e do sistema devido às operações de I/O.
grep -r "root" /etc: Tempo de execução moderado (0.259s total), equilibrado entre o tempo do usuário e do sistema devido ao processamento de texto e I/O de arquivo.
Esta comparação demonstra como diferentes tipos de operações afetam o tempo de execução e o uso de recursos. Entender esses padrões pode ajudá-lo a identificar gargalos em seus scripts e comandos, levando a um código mais eficiente.