Agrupar usuarios en páginas de 10

Gana FxDart

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

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

N = 100

Tiempo Empate

Dart nativo 9.4 µs
FxDart 7.3 µs

Memoria pico Empate

Dart nativo 16.4 MB
FxDart 16.5 MB

N = 10,000

Tiempo Empate

Dart nativo 754 µs
FxDart 628 µs

Memoria pico Empate

Dart nativo 22.9 MB
FxDart 23.5 MB

N = 1,000,000

Tiempo Gana FxDart

Dart nativo 82.1 ms
FxDart 73.7 ms

Memoria pico Empate

Dart nativo 125.4 MB
FxDart 124.7 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í.