La primera lectura del sensor por encima del límite

Dart nativo basta

Requisito

Un sensor de temperatura registra una lectura cada diez minutos. Encuentra la primera lectura que supere el límite de 75.0 C e imprime su hora y su valor —o una línea alternativa si ninguna lo cruzó—. 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
First over 75.0 C: 09:40 at 76.3 C

Lado a lado

Dart nativo

FxDart

Por qué difieren

No difieren, y aquí Dart nativo es la elección honesta. El skipWhile del núcleo más firstOrNull (de package:collection) es una línea limpia y perezosa que dice exactamente lo que significa, con el mismo resultado nullable que hay que gestionar. El dropWhile → head de FxDart es la misma idea con los nombres de FxTS: merece la pena si el resto de tu archivo ya son cadenas de FxDart, pero nadie debería añadir una librería por esta línea. Cuando gana Dart nativo, lo decimos.

Benchmark

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

N = 100

Tiempo Empate

Dart nativo 1.1 µs
FxDart 969 ns

Memoria pico Empate

Dart nativo 16.4 MB
FxDart 16.5 MB

N = 10,000

Tiempo Empate

Dart nativo 54 µs
FxDart 55 µs

Memoria pico Empate

Dart nativo 15.3 MB
FxDart 15.4 MB

N = 1,000,000

Tiempo Empate

Dart nativo 4.95 ms
FxDart 5.22 ms

Memoria pico Empate

Dart nativo 117.9 MB
FxDart 117.2 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í.