Как измерить время выполнения процесса или команды

«Как измерить время выполнения процесса или команды» — вопрос из категории Linux и командная строка, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В работе QA-инженера часто требуется замерять время выполнения скриптов, команд или этапов пайплайна для анализа производительности или определения таймаутов.

1. Встроенная команда time в Bash: Самый простой способ измерить время выполнения любой команды или скрипта.

   time ./run_tests.sh

Вывод показывает реальное время (real), время процессора в пользовательском режиме (user) и в режиме ядра (sys).

2. Замер времени выполнения части скрипта:

   #!/bin/bash
   START_TIME=$(date +%s)

   # Выполняемая операция, например, запуск набора тестов
   pytest ./tests/suite/

   END_TIME=$(date +%s)
   DURATION=$((END_TIME - START_TIME))
   echo "Тесты выполнялись $DURATION секунд."

3. Использование time для детализированного вывода (GNU time):

   /usr/bin/time -v python3 load_test.py

Ключ -v дает подробную статистику: использование памяти, количество page faults, контекстных переключений и т.д.

4. Практическое применение в CI/CD для тестов: В сценариях CI можно замерять время этапов и логировать его для дальнейшего анализа трендов.

   # Пример в .gitlab-ci.yml
   measure_tests:
     script:
       - start=$(date +%s%N)
       - mvn test
       - end=$(date +%s%N)
       - echo "duration=$(( (end - start) / 1000000 ))ms" > test_duration.txt
     artifacts:
       paths:
         - test_duration.txt

Зачем это QA:

  • Выявление деградации производительности тестовых прогонов.
  • Определение оптимальных таймаутов для операций.
  • Сбор метрик для отчетов о стабильности и скорости тестирования.