Sagt mit wie lange es dauert!

03/06/2010 12:06 HardCore.1337#1
Hi, ich arbeite gerade an einem Primzahlrechner.
Ziel ist es, eine sehr gute Parallelisierung hinzu bekommen.
Das Programm sucht dafür alle Primzahlen von 0 bis 9999999. Das Programm ist so gebaut, das das gesamte Rechnen in unglaublichen 1.1sekunden passiert . Am Ende könnt ihr eure Ergebnisse auch speichern.

Dafür

Danke für eure Hilfe :D

[Only registered and activated users can see links. Click Here To Register...]
03/06/2010 12:51 Shari2#2
Wie testest du auf Primzahlen?
03/06/2010 13:04 HardCore.1337#3
eigener Algorithmus
03/06/2010 13:13 Shari2#4
Ich habe nur den Verdacht das dir die meiste Zeit beim Testen verloren geht. Auf ner 1.4Ghz Maschine mit 2GB ram sagt mir GetTickCount 0x341A aka 13348ms (Single Thread)

Und da geht noch das meiste für int2string convertierung + Writefile drauf
03/06/2010 13:15 xNopex#5
Dein Programm Crasht bei mir. Desweiteren würde ich den Algorithmus optimieren... Bei mir dauert ein eigenes Programm, das ich früher mal geschrieben hatte, für die Überprüfung von 30,000 Zahlen ca. 1sekunde.
03/06/2010 13:16 HardCore.1337#6
Ja wie gesagt, ich überlege noch wie es machen könnte.
Die zeit wird nur für die reine Überprüfung ohne Typumwandlung genommen.

@xNopex: kann ich deinen Algo mal sehen?
03/06/2010 13:19 xNopex#7
Code:
vector<int> found; // Speichert gefundene Primzahlen
// Belege Primzahlen von 2-10 vor
found.push_back( 2 );
found.push_back( 3 );
found.push_back( 5 );
found.push_back( 7 );
for( unsigned int i = 11; i < max; i += 2 )
{
    bool prim = true;
    for( unsigned int j = 0; j < found.size() && prim; j++ )
    {
        if( i % found.at( j ) == 0 )
            prim = false;
    }
    if( prim )
        found.push_back( i );
}
03/06/2010 13:29 HardCore.1337#8
Ok, ich arbeite gerade an einem das 10.000.000 in 6sek lösen kann
03/06/2010 13:44 Shari2#9
Falls es dir nichts ausmacht kannst du es einmal als SingleThread und einmal als MultiThread schreiben? und dann mal für nen Zahlenbereich testen der jetzt nicht so argh lang dauert und dann mal Zeiten für beide Versionen rausgeben? Ich hab hier leider keinen Quadcore da.
03/06/2010 13:45 HardCore.1337#10
So, Update.
Neuer Algo, der die Zahlen bis 9999999 in 1sekunde ausrechnet

Achtung: Bei unter 2,5GB Ram kommt es zum OutOfMemory
03/06/2010 14:00 Shari2#11
Wofür brauchst du den soviel RAM??? das klingt irgendwie nach Memory Leak
03/06/2010 14:01 HardCore.1337#12
Die Zahlen werden erst mal alle in einem Array gespeichert. Sonst würde diese Geschwindigkeit nie erreicht werden
03/06/2010 14:02 xNopex#13
Auszug aus der Primzahl.txt:

Code:
2
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
9, 15, 25, 35, 45, 49 sind keine Primzahlen...
03/06/2010 14:04 HardCore.1337#14
hast du die Standartvariante gewählt oder die Super?
03/06/2010 14:05 Shari2#15
Ja aber 10.000.000 *4 Bytes (ich geh mal von 32 Bit System aus) sind ca 39Mb ??? Oder kann ich einfach nicht rechnen?