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).