Files
2026-test-labor-02/bash/compare_modes.sh
2026-06-22 22:38:29 +03:00

97 lines
4.6 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ==============================================================================
# Сравнение режимов замера скорости: без сжатия vs с gzip
# ==============================================================================
# Этот скрипт демонстрирует разницу между измерением реальной скорости канала
# и эффективной скорости с учётом HTTP-сжатия
# ==============================================================================
echo "=============================================="
echo "Сравнение режимов замера скорости"
echo "=============================================="
echo ""
# URL для тестирования - желательно файл, который хорошо сжимается
# Например, HTML, JSON, текст. Бинарные файлы (изображения, архивы) сжимаются плохо.
URL="${1:-https://www.wikipedia.org/}"
echo "URL: $URL"
echo ""
echo "Выполняем 2 теста (по 2 запроса каждый)..."
echo ""
# Тест 1: БЕЗ сжатия (реальная скорость интернет-канала)
echo "1⃣ Режим: БЕЗ HTTP-сжатия (реальная скорость канала)"
echo " ./speed_test.sh -n 2 \"$URL\""
echo ""
speed_no_gzip=$(./speed_test.sh -q -n 2 "$URL" 2>/dev/null)
if [ $? -eq 0 ]; then
echo " ✅ Результат: ${speed_no_gzip} МБ/с"
else
echo " ❌ Ошибка измерения"
speed_no_gzip="0"
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Тест 2: С сжатием (эффективная скорость передачи данных)
echo "2⃣ Режим: С HTTP-сжатием (эффективная скорость)"
echo " ./speed_test.sh -g -n 2 \"$URL\""
echo ""
speed_with_gzip=$(./speed_test.sh -q -g -n 2 "$URL" 2>/dev/null)
if [ $? -eq 0 ]; then
echo " ✅ Результат: ${speed_with_gzip} МБ/с"
else
echo " ❌ Ошибка измерения"
speed_with_gzip="0"
fi
echo ""
echo "=============================================="
echo "Итоги сравнения:"
echo "=============================================="
echo ""
echo "Без сжатия (реальный канал): ${speed_no_gzip} МБ/с"
echo "С сжатием (эффективная): ${speed_with_gzip} МБ/с"
echo ""
# Вычисляем разницу если оба теста успешны
if (( $(echo "$speed_no_gzip > 0" | bc -l) )) && (( $(echo "$speed_with_gzip > 0" | bc -l) )); then
if (( $(echo "$speed_with_gzip > $speed_no_gzip" | bc -l) )); then
ratio=$(echo "scale=2; $speed_with_gzip / $speed_no_gzip" | bc)
improvement=$(echo "scale=1; ($speed_with_gzip - $speed_no_gzip) / $speed_no_gzip * 100" | bc)
echo "📊 Выигрыш от сжатия: ${ratio}x (${improvement}% быстрее)"
echo ""
echo "💡 Интерпретация:"
echo " • Реальная пропускная способность канала: ${speed_no_gzip} МБ/с"
echo " • Благодаря HTTP-сжатию вы получаете данные эффективно,"
echo " как если бы канал был быстрее в ${ratio}x раз!"
echo ""
echo " Это полезно для:"
echo " - Загрузки веб-страниц (HTML, CSS, JS)"
echo " - API с JSON-ответами"
echo " - Текстовых файлов"
elif (( $(echo "$speed_no_gzip > $speed_with_gzip" | bc -l) )); then
diff=$(echo "scale=2; $speed_no_gzip - $speed_with_gzip" | bc)
echo "⚠️ Скорость с сжатием немного ниже (разница: ${diff} МБ/с)"
echo ""
echo "💡 Возможные причины:"
echo " • Файл плохо сжимается (картинки, видео, архивы)"
echo " • Накладные расходы на сжатие/распаковку"
echo " • Вариация скорости сети между измерениями"
else
echo "Скорости примерно одинаковы - файл, вероятно, не сжимается"
fi
else
echo "⚠️ Не удалось выполнить сравнение"
fi
echo ""
echo "=============================================="