Etiquetas de puesto para una tabla de clasificación
Requisito
Una tabla de clasificación ya viene ordenada por puntuación, de mayor a menor. Imprime una etiqueta de puesto por jugador —posición empezando en 1, nombre y puntuación—. Los datos están en el código de abajo; ambas versiones deben imprimir las líneas que aparecen bajo Salida esperada.
Salida esperada
1. Hana (982 pts) 2. Dan (951 pts) 3. Ava (917 pts) 4. Finn (862 pts) 5. Cara (840 pts) 6. Ben (799 pts)
Lado a lado
Dart nativo
FxDart
Por qué difieren
Solo en el nombre. El indexed de Dart 3 produce
exactamente los mismos records (index, element) que
produce zipWithIndex en FxDart, así que los dos callbacks
de map son idénticos carácter por carácter: un empate
limpio y un buen ejemplo de la librería básica de Dart poniéndose al
día (antes de los records y de indexed, el lado nativo era
un contador manual). Usa zipWithIndex cuando ya estés
dentro de una cadena fx —también existe en las cadenas
asíncronas— e indexed en todo lo demás.
Benchmark
N = 100
Tiempo Empate
Memoria pico Empate
N = 10,000
Tiempo Empate
Memoria pico Gana nativo
N = 1,000,000
Tiempo Empate
Memoria pico Gana FxDart
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í.