Перейти к содержанию

6. Измерения

Все значения взяты из реальных запусков GitHub Actions (раннер ubuntu-latest, Python 3.11) и с опубликованных сайтов. Длительности заданий — как их показывает GitHub (округление до секунды).

6.1. Время заданий по запускам

Запуск Коммит lint, с build, с deploy-pages, с deploy-cloudflare, с deploy-ssh, с Весь запуск
№4 (повторный, после добавления секретов) 93ca770 27 25 9 31 — 1 мин 34 с
№5 (намеренная ошибка) 845bd78 36 пропущено пропущено пропущено — 39 с
№6 83e27e3 32 38 11 33 — 1 мин 52 с
№7 (данные изменены) ade4237 22 38 9 32 — 1 мин 40 с
№8 (откат изменения данных) 22f54bb 30 36 11 32 — 1 мин 45 с
№9 (добавлено задание deploy-ssh) 825dc76 26 36 12 32 16 1 мин 43 с
№10 (итоговая версия отчёта) 152208f 31 37 29 36 15 1 мин 49 с
Среднее по успешным запускам 28,0 35,0 13,5 32,7 15,5 (два запуска) 1 мин 44 с (103,8 с)
Минимум / максимум 22 / 32 25 / 38 9 / 29 31 / 36 15 / 16 94 / 112 с

Запуск №5 остановился на lint: ошибка в строгом режиме за 36 секунд не дала собрать и выложить сайт. Время всего запуска меньше суммы заданий, потому что deploy-pages, deploy-cloudflare и deploy-ssh идут параллельно после build. Для шести успешных запусков это одиночные замеры: разброс 22–32 секунды у lint объясняется работой раннера, статистической оценки из них не получится. В запуске №10 deploy-pages занял 29 секунд вместо обычных 9–12; причину я не выясняла (шаг выкладки на стороне GitHub), поэтому среднее по этому заданию завышено одним выбросом.

6.2. Разбивка по шагам (запуск №9)

Задание Шаг Время, с
build установка зависимостей (pip install, кэш pip) 20
build расчёт (scripts/analyze.py) 3
build сборка для GitHub Pages 1
build сборка для Cloudflare Pages 0
build checkout (1), setup-python (3), загрузка двух артефактов (3), служебные шаги (2) 9
build накладные расходы между шагами (36 с задания − 33 с сумма шагов) 3
deploy-pages actions/deploy-pages 7
deploy-pages проверка страницы (Healthcheck) 1
deploy-cloudflare download-artifact 1
deploy-cloudflare создание проекта (wrangler pages project create) 10
deploy-cloudflare выкладка (wrangler pages deploy) 8
deploy-cloudflare проверка страницы (Healthcheck, внутри пауза 10 с) 10
deploy-ssh запуск sshd и создание ключа 7
deploy-ssh выкладка action'ом rsync-ssh-deploy 2
deploy-ssh проверка копии 1

Самый дорогой шаг сборки — установка зависимостей (20 из 36 с). Шаг «создание проекта» на Cloudflare выполняется при каждом запуске и каждый раз завершается ошибкой «проект уже есть», которую подавляет || true: после первой выкладки его можно убрать и сэкономить 10 секунд.

6.3. Время развёртывания по вариантам выкладки

Вариант Полезная часть выкладки, с Всё задание, с Что входит в разницу
GitHub Pages 7 12 подготовка раннера, проверка страницы (1 с)
Cloudflare Pages 8 32 создание проекта (10 с), проверка страницы с паузой на публикацию (10 с), подготовка раннера
SSH (rsync-ssh-deploy) 2 16 запуск sshd и создание ключа (7 с), проверка копии, подготовка раннера; на реальном сервере sshd уже работает

Таким образом, сами операции выкладки занимают от 2 до 8 секунд; остальное — подготовка и проверка.

6.4. Вес страниц

Вес измерен на опубликованных сайтах (версия 152208f, запуск №10) скриптом в браузере: для каждой страницы запрашиваются сама страница и все её ресурсы с того же сайта (стили, скрипты, значок, картинки), размеры берутся из PerformanceResourceTiming. «Передано» — байты по сети (со сжатием, которое применяет хостинг), «Развёрнуто» — после распаковки. Кэш браузера отключён, поэтому цифры соответствуют первому заходу на страницу. Внешних запросов нет.

Страница Ресурсов, шт. Только HTML, передано, Б Всего, GitHub Pages, передано, Б Всего, Cloudflare Pages, передано, Б Всего, развёрнуто, Б
<<<<<<< Updated upstream
/ 5 7 177 70 449 71 805 296 936
intro/ 5 7 062 70 334 71 752 296 632
workflow/ 6 8 927 157 531 158 986 388 717
research/t3-ci-cd/ 5 9 612 72 884 74 349 306 223
practice/p3-pipeline/ 9 12 200 318 142 319 512 560 415
practice/action/ 8 10 044 186 942 188 203 423 435
measurements/ 5 7 645 70 917 72 339 299 852
debug/ 8 10 371 233 653 235 042 470 127
conclusion/ 5 8 028 71 300 72 696 298 962
links/ 5 6 472 69 744 71 156 294 833
listings/ 5 19 888 83 160 81 477 410 677
Среднее по 11 страницам 9 766 127 732 128 847 367 892

Поисковый индекс search/search_index.json в таблицу не входит: он загружается отдельно, один раз при первом поиске: на GitHub Pages 38 667 Б по сети (219 529 Б развёрнуто), на Cloudflare Pages 46 264 Б по сети.

| / | 5 | 7 177 | 70 449 | 71 805 | 296 936 | | intro/ | 5 | 7 062 | 70 334 | 71 752 | 296 632 | | workflow/ | 6 | 8 927 | 157 531 | 158 986 | 388 717 | | research/t3-ci-cd/ | 5 | 9 612 | 72 884 | 74 349 | 306 223 | | practice/p3-pipeline/ | 9 | 12 200 | 318 142 | 319 512 | 560 415 | | practice/action/ | 8 | 10 044 | 186 942 | 188 203 | 423 435 | | measurements/ | 5 | 7 645 | 70 917 | 72 339 | 299 852 | | debug/ | 8 | 10 371 | 233 653 | 235 042 | 470 127 | | conclusion/ | 5 | 8 028 | 71 300 | 72 696 | 298 962 | | links/ | 5 | 6 472 | 69 744 | 71 156 | 294 833 | | listings/ | 5 | 19 888 | 83 160 | 81 477 | 410 677 | | Среднее по 11 страницам | | 9 766 | 127 732 | 128 847 | 367 892 |

Поисковый индекс search/search_index.json в таблицу не входит: он загружается отдельно, один раз при первом поиске: на GitHub Pages 38 667 Б по сети (219 529 Б развёрнуто), на Cloudflare Pages 46 264 Б по сети.

Stashed changes

Что видно из таблицы:

  • Основной вес страницы — не текст, а общие ресурсы темы (стили и скрипты, около 65 КБ по сети на любой странице). Без картинок страница весит 70–83 КБ.
  • Самые тяжёлые страницы — те, где есть графики и скриншоты: practice/p3-pipeline/ (около 318 КБ) и debug/ (около 234 КБ). Листинги (listings/) тяжелы по тексту (HTML 140 КБ развёрнуто), но хорошо сжимаются.
  • Размеры «Всего» на двух хостингах отличаются на 1–2 КБ у страниц и на несколько КБ у поискового индекса: хостинги сжимают ответы по-разному. Картинки и стили одинаковы. <<<<<<< Updated upstream
  • Для сравнения: на версии 825dc76 до добавления отчётных разделов главная страница весила 69 257 Б по сети, сейчас 70 449 Б; рост связан с титульным листом и таблицей разделов.

  • Для сравнения: на версии 825dc76 до добавления отчётных разделов главная страница весила 69 257 Б по сети, сейчас 70 449 Б; рост связан с титульным листом и таблицей разделов.

    Stashed changes

6.5. Другие измерения

Время расчёта с кэшем и без, а также время lint с кэшем pip и без него — в разделе 4. Время тестового workflow action: 18 секунд (запуск №1 репозитория rsync-ssh-deploy, из них 15 секунд занимает задание test).