Medias semanales a partir de lecturas diarias

Gana FxDart

Requisito

Un sensor de temperatura registró una lectura al día durante tres semanas completas (21 valores). Informa de la media por semana de 7 días, una línea por semana, numeradas desde 1. Los datos están en el código de abajo; ambas versiones deben imprimir las líneas que aparecen bajo Salida esperada.

Salida esperada
Week 1: 21.3°C
Week 2: 25.0°C
Week 3: 20.5°C

Lado a lado

Dart nativo

FxDart

Por qué difieren

«Divide en grupos de 7» no tiene forma de escribirse en el núcleo de Dart, así que la versión nativa recorre un bucle con contador y recorta cada semana con sublist(w * 7, w * 7 + 7) — aritmética de índices que quien lee tiene que volver a verificar, y que se rompe si la última semana queda incompleta. El chunk(7) de FxDart dice la agrupación en una sola palabra (y gestiona una cola corta), averageBy sustituye al baile de reducir y luego dividir, y zipWithIndex trae el número de semana al pipeline en lugar de tomarlo prestado del contador del bucle.

Benchmark

Apple M1 Max, 32 GB de RAM · Dart 3.12.2 (compilado AOT) · 2026-08-24

N = 98

Tiempo Empate

Dart nativo 4.2 µs
FxDart 4.5 µs

Memoria pico Empate

Dart nativo 16.5 MB
FxDart 16.5 MB

N = 9,996

Tiempo Empate

Dart nativo 396 µs
FxDart 464 µs

Memoria pico Empate

Dart nativo 22.7 MB
FxDart 22.7 MB

N = 999,999

Tiempo Empate

Dart nativo 49.1 ms
FxDart 48.5 ms

Memoria pico Gana nativo

Dart nativo 97.2 MB
FxDart 146.0 MB

Las barras son medianas de iteraciones cronometradas repetidas en procesos nuevos por lado (los N pequeños se agrupan por resolución del temporizador). Dos lados a menos del 5% entre sí — o a menos de 0.6 ms, una diferencia que nadie puede percibir — cuentan como empate; las carreras relativas ajustadas se vuelven a medir hasta 5 veces. En una app, cualquier cosa por debajo de unos pocos milisegundos es invisible para el usuario, gane la barra que gane. La memoria es el RSS pico del proceso. La VM de Dart y el dataset son idénticos en ambos lados, así que la diferencia entre las dos barras es lo que retiene el pipeline en sí.