Salta las lecturas de calentamiento

Empate

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

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

N = 100

Tiempo Empate

RxDart 32 µs
FxDart 16 µs

Memoria pico Empate

RxDart 16.6 MB
FxDart 16.4 MB

N = 1,000,000

Tiempo Gana FxDart

RxDart 283.0 ms
FxDart 180.1 ms

Memoria pico Gana RxDart

RxDart 132.3 MB
FxDart 142.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í.