При написании Bash-скриптов важно не только выполнять задачи, но и делать это максимально эффективно. Разберемся, как можно замерять время выполнения циклов и оптимизировать их.
1. Измерение времени выполнения. Для базового замера используем команду time.
Пример простого for-цикла:
time for i in {1..10000}; do echo -n; done
real 0m0.245s
user 0m0.190s
sys 0m0.055s
real - общее время выполнения
user - время, потраченное процессором на выполнение кода
sys - время, потраченное на системные вызовы
2. Оптимизация цикла. Допустим, у нас есть for-цикл, выполняющий сложные вычисления:
start=$(date +%s) # Засекаем время начала
for i in {1..1000}; do
echo $((i * i)) > /dev/null # Квадрат числа
done
end=$(date +%s) # Засекаем время окончания
echo "Время выполнения: $((end - start)) секунд"
Но можно ускорить этот процесс!
Оптимизация с seq и awk:
time seq 1 1000 | awk '{print $1 * $1}' > /dev/null
Результат: Использование awk снижает нагрузку на bash, так как он быстрее работает с числами.
3. Запуск в параллельном режиме. Для ещё большего ускорения используем xargs -P:
time seq 1 1000 | xargs -P 4 -I {} bash -c 'echo $(( {} * {} ))' > /dev/null
-P 4 запускает 4 параллельных процесса, ускоряя обработку данных.
BashTex 📱 #bash #utils