Files

35 lines
1.2 KiB
Markdown

# Beskrivelse
🌐 [English](Description) · **Dansk** · [Bahasa Melayu](Description-ms)
## Formål
Programmet viser, hvor hurtig en CPU er. Hvor hurtig den ser ud til at være,
afhænger af, hvordan programmet er skrevet, så tallet måler CPU'en og koden
sammen, ikke CPU'en alene.
## Hvad det gør
Programmet tester hvert tal fra 0 til 1.000.000 med `is_prime_avx2`, som bruger
AVX2-prøvedivision med 6k ± 1 (fire divisorer pr. trin). Det udskriver hvert
primtal på sin egen linje og skriver en opsummering til standard error:
```text
Found 78498 primes from 0 to 1000000 in 13.806 ms
```
78.498 er det kendte antal primtal op til 1.000.000, så opsummeringen virker
også som kontrol af, at resultatet er rigtigt.
## Hvorfor tiden afhænger af koden
Den samme CPU giver meget forskellige tider for forskellige programmer:
- algoritmen (prøvedivision, en si, en segmenteret si),
- instruktionssættet (skalar kode, AVX2, AVX-512),
- compiler og flag (`-O3 -mavx2`, MSVC `/O2 /arch:AVX2`),
- hvad der måles (kun søgningen, eller også udskrivning til en konsol).
Her måles kun søgningen. Resultatet samles først og udskrives bagefter, så
konsollens hastighed ikke påvirker tallet.