📖 Przegląd

Moduł Performance (PerformanceMonitor) umożliwia pomiar czasu operacji, śledzenie metryk i raportowanie do Firebase Performance lub własnego backendu.

Szybki przykład
// Mierzenie operacji
val traceId = ADict.Performance.startTrace("load_data")
// ... operacja
ADict.Performance.stopTrace(traceId)

// Lub z lambdą
val result = ADict.Performance.measure("api_call") {
    api.fetchData()
}

⏱️ Traces

startTrace(name: String): String

Rozpocznij trace. Zwraca ID.

stopTrace(traceId: String)

Zakończ trace.

measure<T>(name: String, block: () -> T): T

Zmierz czas bloku i zwróć wynik.

measureSuspend<T>(name: String, block: suspend () -> T): T

Zmierz czas suspending funkcji.

Mierzenie operacji
// Manualne start/stop
fun loadArticles() {
    val traceId = ADict.Performance.startTrace("load_articles")

    try {
        val articles = repository.getArticles()
        displayArticles(articles)
    } finally {
        ADict.Performance.stopTrace(traceId)
    }
}

// Z lambdą (zalecane)
fun loadArticles() {
    val articles = ADict.Performance.measure("load_articles") {
        repository.getArticles()
    }
    displayArticles(articles)
}

// Suspend
suspend fun fetchData() {
    val data = ADict.Performance.measureSuspend("fetch_data") {
        api.getData()
    }
}

📊 Metryki

recordMetric(name: String, value: Long)

Zapisz metrykę numeryczną.

incrementMetric(name: String, by: Long = 1)

Inkrementuj metrykę.

getMetric(name: String): Long

Pobierz wartość metryki.

Śledzenie metryk
// Zapisz metrykę
ADict.Performance.recordMetric("cache_size", cacheSize)
ADict.Performance.recordMetric("api_response_time", responseTimeMs)

// Inkrementuj
ADict.Performance.incrementMetric("api_calls")
ADict.Performance.incrementMetric("cache_hits")

// Pobierz
val apiCalls = ADict.Performance.getMetric("api_calls")

🏷️ Atrybuty trace

setTraceAttribute(traceId, key, value)

Dodaj atrybut do trace.

Atrybuty
val traceId = ADict.Performance.startTrace("api_request")
ADict.Performance.setTraceAttribute(traceId, "endpoint", "/users")
ADict.Performance.setTraceAttribute(traceId, "method", "GET")
// ... request
ADict.Performance.stopTrace(traceId)

📤 Raportowanie

getReport(): PerformanceReport

Pobierz raport z zebranymi danymi.

clearData()

Wyczyść zebrane dane.