복리 이자 테이블

FxDart 승

요구사항

1000달러, 연 5% 복리로 6년간 불어나는 연도별 잔액 테이블을 출력하세요 — 0년차 시작 잔액부터 한 줄씩, 각 금액은 소수점 둘째 자리까지 표시합니다. 상수는 아래 코드에 있으며, 두 버전 모두 예상 출력 아래에 표시된 줄을 출력해야 합니다.

예상 출력
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

나란히 보기

네이티브 Dart

FxDart

차이가 나는 이유

누적 잔액은 누적 fold이며, 순수 Dart 코어에는 이를 가리키는 단어가 없습니다: fold는 최종값만 내놓으므로, 네이티브 버전은 0년차 줄로 리스트를 초기화하고 balance를 변경하며 값을 추가하는 루프로 돌아갑니다 — 복리 계산 규칙, 반복, 형식 지정이 모두 하나의 본문 안에 뒤섞여 있습니다. FxDart의 scan은 중간 잔액 각각을 파이프라인의 값으로 만들어줍니다: 시드는 0년차 행이고, 복리 계산 규칙은 하나의 순수 함수이며, 형식 지정은 별도의 map 단계입니다. 잔액이 처음으로 1200달러를 넘는 연도를 알고 싶다면? 필터 하나를 체인에 이으면 됩니다 — 루프 버전은 대신 플래그를 하나 더 늘려야 합니다.

벤치마크

Apple M1 Max, RAM 32 GB · Dart 3.12.2 (AOT 컴파일) · 2026-08-24

N = 100

시간 무승부

네이티브 Dart 18 µs
FxDart 22 µs

최대 메모리 무승부

네이티브 Dart 16.4 MB
FxDart 16.5 MB

N = 10,000

시간 무승부

네이티브 Dart 1.94 ms
FxDart 2.04 ms

최대 메모리 무승부

네이티브 Dart 22.5 MB
FxDart 22.9 MB

N = 1,000,000

시간 네이티브 승

네이티브 Dart 221.7 ms
FxDart 244.5 ms

최대 메모리 무승부

네이티브 Dart 126.6 MB
FxDart 128.6 MB

막대는 사이드별로 새 프로세스에서 반복 측정한 중앙값입니다(작은 N은 타이머 해상도를 위해 배치 처리). 두 사이드가 서로 5% 이내이거나 — 사람이 지각할 수 없는 차이인 0.6ms 이내이면 — 무승부로 칩니다. 상대 차이가 근소한 경우는 최대 5회까지 다시 측정합니다. 앱에서는 어느 막대가 짧든 몇 밀리초 이하의 차이는 사용자에게 보이지 않습니다. 메모리는 프로세스 최대 RSS입니다. Dart VM과 데이터셋은 양쪽이 동일하므로, 두 막대의 차이가 곧 파이프라인 자체가 붙들고 있는 양입니다.