Agrupar usuarios en páginas de 10
Requisito
Divide doce usuarios en páginas de 10 (la última puede quedarse corta) e imprime cada página en una línea con su número, su tamaño y sus nombres. Los datos están en el código de abajo; ambas versiones deben imprimir las líneas que aparecen bajo Salida esperada.
Salida esperada
Page 1, 10 users: Ava, Ben, Cara, Dan, Elle, Finn, Gus, Hana, Ivan, June Page 2, 2 users: Kai, Lena
Lado a lado
Dart nativo
FxDart
Por qué difieren
El núcleo de Dart no ofrece nada para trocear — sin ayuda esto es un
bucle por índices sobre sublist con una guarda
min para la última página, más corta. El
slices de package:collection lo resuelve, y
si ya dependes de él los dos paneles son casi gemelos. La ventaja de
FxDart es que chunk no necesita ninguna dependencia
extra, es perezoso (las páginas se materializan a medida que las
consumes) y ese mismo paso funciona en cadenas asíncronas — agrupar
peticiones antes de una etapa concurrent es el uso
clásico. Una victoria modesta, pero real.
Benchmark
N = 100
Tiempo Empate
Memoria pico Empate
N = 10,000
Tiempo Empate
Memoria pico Empate
N = 1,000,000
Tiempo Gana FxDart
Memoria pico Empate
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í.