Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Atlan123

1x Contest-Sieger!

  • Private Nachricht senden

51

11.05.2008, 11:11

Zitat von »"Phil"«

EDIT: Oh, ich sehe starkes Schwanken, ohne was geändert zu haben, erreichte das eben ~3.1 und danach ~2.2 und zweimal ~2.7. Da geht noch was. :D


Hmm... Wo kommt die Toleranz in deinem Ergebnis her? Kann es sein du du im Hintergrund noch andere Prozesse laufen hast, die mal deinen Algorithmus bremsen und in einem anderen Test den Greedy-Algorithmus ausbremsen?

Edit: ~2.7
Edit2: >2.7
Edit3: >2.8, wo steht ihr? Hat schon wer die 3-Punkte-Marke geknackt?

52

11.05.2008, 16:32

Naja, es laufen immer Prozesse im Hintergrund. Dann gibt es da noch die Timerinterupts und das Betriebsystem verschafft sich auch etwas Rechenzeit. Selbst habe ich auch Schwankungen um die 0.05 Punkte. Auch unterscheidet sich die Punktzahl von Prozessor zu Prozessor (AMD vs. Intel). Ich glaube ja, 2.8 ist fast schon maximal ohne auf Assemblerebene zu optimieren, und selbst dort, weiss ich nicht recht wo noch optimiert werden soll.

@Atlan123: Ich denke mal du hast den gleichen Ansatz wie ich, was ist denn deine Magic Number? :-) Ach ja zur 3-Punkte-Marke: Geknackt ja, aber da habe ich meine Maus wild hin und herbewegt, als der greedy dran war :-). Ich werde jetzt mal gcc inline assembler ausprobieren, ma schauen wo ...

Atlan123

1x Contest-Sieger!

  • Private Nachricht senden

53

11.05.2008, 16:41

*gg*
Ich hänge gerade bei 2.8 Punkten fest. Muss jetzt mal anfangen zu optimieren...

Edit:
@David
Hast du eine eigene Lösung erarbeitet? Oder hast du dir diesmal nur die Aufgabe ausgedacht und läßt den Pöbel rumprobieren?? :)
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." (Bjarne Stroustrup)

54

11.05.2008, 17:40

Hmm, 2.8 bei Intel oder AMD ?

Atlan123

1x Contest-Sieger!

  • Private Nachricht senden

55

11.05.2008, 17:44

Intel.

und selbst?
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." (Bjarne Stroustrup)

56

11.05.2008, 18:13

AMD, auf nen Intel Xeon 1.8 GHz bin ich schon mal bei 2.93-2.97 gewesen, ohne Assembler (also kein normaler Intel) . Dann habe ich mein memset und memcpy durch MMX / SSE2 ersetzt und lande bei 2.97-2.99. AMD ignoriert die Optimierung einfach und ist mit SSE2 genauso gut wie ohne, klebe da bei so 2.75-2.83 fest.

@David

Darf ich das Framework etwas veraendern, z.B.:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// bestimmt die Punktzahl einer Lösung
double measure(void (* p_function)(const uint*, uint, uint, bool*),
               double num_seconds,
               uint random_seed,
               double* p_out_num_tasks_per_second = 0,
               double* p_out_average_score = 0,
               double* p_out_exact_hit_ratio = 0)
{
    ...

    const double t0 = time();
    while(true)
    {
        uint numbers[50] __attribute__ ((aligned (16)));
        bool select[50] __attribute__ ((aligned (16)));
    ...


Edit: Ich glaube der Xeon-Prozessor ist kein guter Anhaltspunkt fuer die Performance. Und ich verwende keine local struct static inline ... Funktion. Bei mir sind sie separat.

Ba'el

Alter Hase

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

57

12.05.2008, 16:48

ich hab endlich ma' 'ne Stunde Zeit gefunden mich an so'n Contest zu setzen

mein erster Ansatz gibt
VC++:
Debug -> ~3.6
Release -> ~2.1

GCC:
Debug -> >2.5
Release -> >2.3

ma' seh'n ob ich nächste Woche noch 'ne Stunde Zeit find' das zu verbessern^^
aktuelle Projekte:
Ruby on Rails
XNA & Touchless
Progr. mobiler Endgeräte (GPS Trekking)

58

14.05.2008, 08:48

Es darf memset verwendet werden? Ich dachte nur Standard-C++-Kram. Also ohne C-Funktionen, ohne STL, ohne Assembler und ohne compilereigenen Kram...

marfi

Treue Seele

Beiträge: 100

Wohnort: Schwerte

  • Private Nachricht senden

59

14.05.2008, 10:10

Wie ohne assembler?

Ich habe schon die hälfte umgesetzt^^ Vielleicht sollte ich nochmal lesen oO

EDIT: Puh ... habs doch richtig im Kopf gehabt :)

Zitat

- Inline-Assembler ist erlaubt.

60

14.05.2008, 10:54

Hm, okay, dann war es nur der vorherige Wettbewerb. Doof. Da hab ich keinen Nerv zu. ;)

Werbeanzeige