Tabla de interés compuesto

Gana FxDart

Requisito

Imprime una tabla de saldos año a año para $1000 al 5% de interés compuesto durante seis años —una línea por año, empezando por el saldo inicial del año 0, con cada importe formateado a dos decimales. Las constantes están en el código de abajo; ambas versiones deben imprimir las líneas que aparecen bajo Salida esperada.

Salida esperada
year 0: $1000.00
year 1: $1050.00
year 2: $1102.50
year 3: $1157.63
year 4: $1215.51
year 5: $1276.28
year 6: $1340.10

Lado a lado

Dart nativo

FxDart

Por qué difieren

Un saldo acumulado es un fold acumulado, y Dart nativo no tiene una palabra para eso: fold solo da el valor final, así que la versión nativa recurre a un bucle que inicializa una lista con la línea del año 0, muta balance y va añadiendo —la regla de capitalización, la iteración y el formato comparten un mismo cuerpo. El scan de FxDart convierte cada saldo intermedio en un valor del pipeline: el valor inicial es la fila del año 0, la regla de capitalización es una única función pura y el formato es un paso map aparte. ¿Quieres el año en que el saldo supera por primera vez los $1200? Encadena un filtro —la versión con bucle tiene que añadir otro flag en su lugar.

Benchmark

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

N = 100

Tiempo Empate

Dart nativo 18 µs
FxDart 22 µs

Memoria pico Empate

Dart nativo 16.4 MB
FxDart 16.5 MB

N = 10,000

Tiempo Empate

Dart nativo 1.94 ms
FxDart 2.04 ms

Memoria pico Empate

Dart nativo 22.5 MB
FxDart 22.9 MB

N = 1,000,000

Tiempo Gana nativo

Dart nativo 221.7 ms
FxDart 244.5 ms

Memoria pico Empate

Dart nativo 126.6 MB
FxDart 128.6 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í.