Numera la lista de pasos
Requisito
Convierte seis pasos de instalación en una lista de comprobación
numerada — 1. Unbox the sensor kit y así
sucesivamente, una línea por paso, numerando desde uno. Los datos
están en el código; las dos versiones deben imprimir las líneas que
aparecen bajo Salida esperada.
Salida esperada
1. Unbox the sensor kit 2. Charge the base station 3. Pair the remote 4. Mount the wall bracket 5. Run the self-test 6. Register the warranty
Lado a lado
RxDart
FxDart
Por qué difieren
Ni el Stream del core ni RxDart tienen un
map con índice. Lo más cercano que ofrece RxDart es
scan, cuyo acumulador casualmente recibe un índice como
tercer argumento — así que la forma rx mostrada numera los pasos
montándose en un fold: una semilla que tienes que inventar
('') y un valor acumulado que ignoras de inmediato. Las
alternativas no son más limpias en esencia — un contador mutable sobre
el que cierra el mapper, o hacer zip contra Rx.range —
todas las rutas cuelan el índice desde fuera, porque ningún operador
lo lleva consigo. Funciona, y aun así se lee como un apaño.
FxDart dice la cosa directamente: zipWithIndex empareja
cada elemento con su posición, y un map corriente
formatea la pareja. Esto no es tanto un hueco push-contra-pull como un
hueco de vocabulario — un operador de emparejado con índice es
trivialmente expresable en cualquiera de los dos modelos, simplemente
Rx nunca lo desarrolló — pero el lector de cada panel lo nota: un lado
declara «elemento con su índice», el otro lo codifica en el parámetro
sobrante de un acumulador. Veredicto: FxDart.
Benchmark
N = 100
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í.