Lightweight client-side latency profiler для iOS
Инструмент для анализа задержек сетевых запросов прямо на клиенте
LatencyProfiler - это лёгкая библиотека, которая автоматически измеряет время выполнения сетевых запросов в приложении и показывает:
• какие API работают медленно
• насколько они стабильны
• где возникают проблемы
Без прокси, без внешних инструментов — прямо в коде.
• автоматическое отслеживание запросов (URLSession)
• нормализация endpoint (/users/1 → /users/:id)
• метрики p50 / p95
• fastest / typical / slowest latency
• распределение задержек (latency distribution)
• список самых медленных endpoint
• debounce логирования (без спама)
• простая интеграция (zero-config)
⸻
.package(url: "https://github.com/yourname/LatencyProfiler.git", from: "1.0.0")
Интегрирован в нативный механизм URLSession, необоходимо подключить только расширение метода .trackedData(from: URL, alias: String?)
let url = URL(string: "https://jsonplaceholder.typicode.com/users/1")!
let (data, _) = try await URLSession.shared.trackedData(from: url)С alias
let (data, _) = try await URLSession.shared.trackedData(
from: url,
alias: "User API"
)[LatencyProfiler] Summary
🌐 Endpoint: httpbin get
Calls: 5
Fastest: 0.140s
Typical: 0.578s
P95: 0.636s
Slowest: 0.653s
Latency distribution:
<100ms: 0
100-300ms: 2
300ms-1s: 3
1s+: 0
🌐 Endpoint: JSONPlaceholder posts
Calls: 4
Fastest: 0.045s
Typical: 0.045s
P95: 0.046s
Slowest: 0.166s
Latency distribution:
<100ms: 3
100-300ms: 1
300ms-1s: 0
1s+: 0
🌐 Endpoint: Random duck
Calls: 6
Fastest: 0.072s
Typical: 0.080s
P95: 0.349s
Slowest: 39.141s
Latency distribution:
<100ms: 3
100-300ms: 1
300ms-1s: 1
1s+: 1
❗️ Top slow endpoints:
- httpbin get: 0.636s (p95)
- Random duck: 0.349s (p95)
- JSONPlaceholder posts: 0.046s (p95)
⸻
Основные метрики
• Fastest - самый быстрый запрос
• Typical (p50) — обычное время ответа
• P95 - почти худший сценарий
• Slowest - самый долгий запрос
Распределение задержек
<100ms → быстрые запросы
100-300ms → нормальные
300ms-1s → заметная задержка
1s+ → проблема
Top slow endpoints: показывает какие API реально тормозят приложение
LatencyProfiler считает client-side latency, то есть:
• время ожидания сети
• обработку на сервере
• установку соединения
• задержки системы