Gasto dentro de una ventana de fechas

Empate

Requisito

Una exportación del libro de cuentas ya viene ordenada por fecha. Suma el gasto entre el 2026-07-08 y el 2026-07-21, ambos incluidos, sin recorrer la lista entera: salta las entradas anteriores a la ventana, toma entradas mientras sigas dentro de ella y suma lo que quede. Los datos están en el código de abajo; las dos versiones deben imprimir la línea que aparece bajo Salida esperada.

Salida esperada
Spent 2026-07-08 to 2026-07-21: $104.04

Lado a lado

Dart nativo

FxDart

Por qué difieren

Apenas. Dart trae skipWhile y takeWhile en todo Iterable, y ambos son perezosos: la versión en Dart nativo aprovecha el orden exactamente igual que la de FxDart, y se lee igual de bien. La única diferencia real está en el último paso: sumBy nombra la intención, mientras que fold deletrea el valor inicial y la combinación. Eso es ganar por una palabra, no por estructura —llamémoslo empate. Si tu código ya encadena con fx, úsalo aquí por coherencia; si no, Dart nativo va bien.

Benchmark

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

N = 100

Tiempo Empate

Dart nativo 2.2 µs
FxDart 1.6 µs

Memoria pico Gana FxDart

Dart nativo 16.5 MB
FxDart 15.3 MB

N = 10,000

Tiempo Empate

Dart nativo 176 µs
FxDart 110 µs

Memoria pico Gana FxDart

Dart nativo 20.8 MB
FxDart 15.6 MB

N = 1,000,000

Tiempo Gana FxDart

Dart nativo 14.9 ms
FxDart 11.4 ms

Memoria pico Empate

Dart nativo 124.3 MB
FxDart 120.1 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í.