Array zurücksetzen (Performance optimiert)



  • @rapso:

    rapso schrieb:

    //kurz zusammengehackt
    double* pArray1 = (double*)&(CLayer[0][0]);
    double* pArray2 = (double*)&(CLayer[0][0]);
    for(int a=0;a<=(800*600)>>1;a+=4)
    {
           pArray1[a]=pArray2[a]=0;
           pArray1[a+1]=pArray2[a+1]=0;
           pArray1[a+2]=pArray2[a+2]=0;
           pArray1[a+3]=pArray2[a+3]=0;
    }
    

    Sollte pArray2 nicht TLayer heissen anstatt CLayer?



  • rofl.

    was für eine Frage.



  • TheTester schrieb:

    da kannst auch gleich das hier "(800*600)>>1" als Zahlenwert angeben

    bye

    tt

    das macht eigentlich jeder c compiler, ich hätte eigentlich auch /2 schreiben können, sollte trotzdem in einer vorberechneten konstante enden.

    Sollte pArray2 nicht TLayer heissen anstatt CLayer?

    ja klar, war halt mal eben zusammengehackt.
    Es gibt noch einige wege das viel schneller zu bekommen, aber das hängt auch davon ab wo sich der speicher befindet. L1-cache wäre es natürlich am besten, aber das ist nicht möglich mit der größe des arrays 😉

    rapso->greets();



  • groovemaster2002 schrieb:

    Da musst du aufpassen. SSE ist meines Wissens bei AMD erst ab dem Athlon XP verfügbar. Mein alter Thunderbird 900 MHz (ich glaub es war die B Version) konnte SSE zB nicht, und als museumsreif kann man die CPU noch nicht bezeichnen.

    Mein Thunderbird 1,2GHz kann SSE - nur SSE2 kann er nicht. Bist du dir sicher, dass du das nicht verwechselst? SSE ist doch schon ziemlich alt...

    SSE2 kann AMD nämlich IIRC seit Athlon XP



  • Shade Of Mine schrieb:

    groovemaster2002 schrieb:

    Da musst du aufpassen. SSE ist meines Wissens bei AMD erst ab dem Athlon XP verfügbar. Mein alter Thunderbird 900 MHz (ich glaub es war die B Version) konnte SSE zB nicht, und als museumsreif kann man die CPU noch nicht bezeichnen.

    Mein Thunderbird 1,2GHz kann SSE - nur SSE2 kann er nicht. Bist du dir sicher, dass du das nicht verwechselst? SSE ist doch schon ziemlich alt...

    SSE2 kann AMD nämlich IIRC seit Athlon XP

    AMD kann erst seit dem athlonXP SSE, SSE2 ist seit dem Opteron vorhanden (bei amd) und SSE3 wird erst 2005 in einem refresh der cpus reinkommen.

    der thunderbird kann 'nur' 3dnow! mit ein paar erweiterungen (heißt wohl 3dnow! proffesional 😕 )

    rapso->greets();



  • Heißt das nicht Extended 3DNow, oder ist das wieder etwas anderes?

    MfG SideWinder



  • Extended 3DNow! ist schon richtig.

    cya
    liquid



  • rapso schrieb:

    L1-cache wäre es natürlich am besten, aber das ist nicht möglich mit der größe des arrays

    Das nicht, aber man kann immerhin in ASM Prefetchen, und so einige Memory Looks sparen, weil der Stuff dann schon soweit er reinpasst in den Registern steht, und bei Bedarf wieder nachholen.



  • ...und am Ende benötigen wir mehr Rechenzeit um den Prozessortyp und seine Fähigkeiten zu prüfen als das Setzen des Arrays kostet 🤡

    MfG SideWinder



  • Das macht man ja bekanntlicht EINMAL und zwar beim Start der Applikation.

    cya
    liquid


Anmelden zum Antworten