Salta las lecturas de calentamiento
Requisito
Una sonda de temperatura lee bajo mientras se calienta. Descarta las lecturas iniciales por debajo de 20.0 °C, formatea todo lo que viene después de la primera lectura real — incluidas caídas posteriores, que son datos de verdad — e imprime cuántas lecturas sobrevivieron. Los datos están en el código; las dos versiones deben imprimir las líneas que aparecen bajo Salida esperada.
Salida esperada
Live: 21.4 °C Live: 20.9 °C Live: 18.7 °C Live: 22.3 °C Live: 23.0 °C Kept 5 of 8 readings
Lado a lado
RxDart
FxDart
Por qué difieren
No difieren, y ese es el hallazgo. skipWhile y
dropWhile son la misma compuerta de un solo sentido:
descarta mientras el predicado se cumple, se abre de forma permanente
en el primer fallo y no vuelve a cerrarse — por eso la caída de
18.7 °C posterior al calentamiento sobrevive en ambos lados. Es
una compuerta sobre la posición en la secuencia, no sobre el
valor, y ambos modelos tienen un nombre para ella.
Merece la pena notarlo: el panel RxDart es puro dart:async
en este trabajo — skipWhile, map y
toList vienen todos en el Stream del core,
así que el import de RxDart no gana nada aquí. Así se ve el solape del
tier 1 desde la otra dirección: a veces el vocabulario compartido vive
en la propia plataforma. El único resto es el modelo de entrega — un
main async y un await para recolectar lo que
una cadena pull devuelve como un valor corriente, sin event loop de
por medio. Empate.
Benchmark
N = 100
Tiempo Empate
Memoria pico Empate
N = 1,000,000
Tiempo Gana FxDart
Memoria pico Gana RxDart
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í.