리더보드 순위 라벨
요구사항
리더보드는 이미 점수 내림차순으로 정렬되어 있습니다. 선수마다 순위 라벨을 하나씩 출력하세요 — 1부터 시작하는 순위, 이름, 점수. 데이터는 아래 코드에 있으며, 두 버전 모두 예상 출력 아래에 표시된 줄을 출력해야 합니다.
예상 출력
1. Hana (982 pts) 2. Dan (951 pts) 3. Ava (917 pts) 4. Finn (862 pts) 5. Cara (840 pts) 6. Ben (799 pts)
나란히 보기
네이티브 Dart
FxDart
차이가 나는 이유
이름만 다를 뿐입니다. Dart 3의 indexed는 FxDart의
zipWithIndex와 정확히 같은 (index, element)
레코드를 만들어내므로, 두 map 콜백은 글자 하나까지
동일합니다 — 깔끔한 무승부이며, Dart 코어 라이브러리가 따라잡고
있음을 보여주는 좋은 예입니다(레코드와 indexed가
나오기 전에는 네이티브 쪽이 수동 카운터였습니다). 이미
fx 체인 안에 있다면 zipWithIndex를
쓰세요 — 이는 비동기 체인에도 존재합니다 — 그 외의 모든 곳에서는
indexed를 쓰세요.
벤치마크
N = 100
시간 무승부
최대 메모리 무승부
N = 10,000
시간 무승부
최대 메모리 네이티브 승
N = 1,000,000
시간 무승부
최대 메모리 FxDart 승
막대는 사이드별로 새 프로세스에서 반복 측정한 중앙값입니다(작은 N은 타이머 해상도를 위해 배치 처리). 두 사이드가 서로 5% 이내이거나 — 사람이 지각할 수 없는 차이인 0.6ms 이내이면 — 무승부로 칩니다. 상대 차이가 근소한 경우는 최대 5회까지 다시 측정합니다. 앱에서는 어느 막대가 짧든 몇 밀리초 이하의 차이는 사용자에게 보이지 않습니다. 메모리는 프로세스 최대 RSS입니다. Dart VM과 데이터셋은 양쪽이 동일하므로, 두 막대의 차이가 곧 파이프라인 자체가 붙들고 있는 양입니다.