mpja69 / PrimeSieve

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ver.	Comment
====	=================================================================
1	Allt i main()
	Kör endast 1 gång
	Division (modulo) i innerloop

2	Brytit ut Sieve-funktion
	Kör så många pass som möjligt under 5 sekunder = Riktig mätning!
	Bytt division (modulo) i innerloopen mot att stega med primtalet!

3	Använder en struct för vektorn och dess längd 
	Brutit ut koden i funktioner
	Startar ytterloopen med kvadrat-hopp på primtalet

4	Snyggare findPrimes-funktion

5	Ändrat indexingen i vektorn till att den pekar exakt på rätt primtal
	Initierat vektorn med 0 och 1 för att markera alla jämna direkt (då 2 är ett primtal)
	Ignorerat de 2 första, så att indexingen av vektorn börjar på 3.
	Innerloopen stegar dubbla primtalet för att undvika jämna tal
	Ytterloopen stegar med 2 för att undvika jämna tal
		Kompilerat med -O2 och -O3. Gav 10X prestanda

6	Bytt sqrt mot usqrt: (2X snabbare...men ger inte så mycket i sieven),
	Provar bitmap: otpimera minnet...men inte hastighet
	byte   = (index DIV 8) // Heltalsdivision
	bit    = ( 1 << (index MOD 8)) (ex 00000001 med index 0) //
	 ~bit  = (ex 11111110 med index 0) //komplementet
	Clear: buf[byte] = ~bit     (( AND 
	Get: (buf[byte] & bitmask) !=0 // Kolla om biten är satt... (alltså inte 0)

About


Languages

Language:C 99.1%Language:Makefile 0.9%