Ist operator[] langsamer als ein Iterator?



  • hast du das als release mit allen optimierungen getestet? müsste dann eigentlich beides denselben asm code ergeben.



  • endline schrieb:

    Ausgabe:

    Timer 0 took 2.98 seconds
    Timer 1 took 8.35 seconds

    Hatte in etwa die selben Zahlen raus, nachdem ich -O3 noch hinzugefügt habe bin ich auf um die 10tel Sekunde gekommen. Erstaunlich wie gut der Compiler optimieren kann 😮



  • KasF schrieb:

    endline schrieb:

    Ausgabe:

    Timer 0 took 2.98 seconds
    Timer 1 took 8.35 seconds

    Hatte in etwa die selben Zahlen raus, nachdem ich -O3 noch hinzugefügt habe bin ich auf um die 10tel Sekunde gekommen. Erstaunlich wie gut der Compiler optimieren kann 😮

    Kannst du die Ausgabe mit -O3 mal bitte zeigen?

    Edit: Vermutlich macht das optimierte Programm gar nichts, da 'a' nicht verwendet und die Schleife auch nicht durchlaufen wird...



  • Bitte:

    Timer 0 took 0.062 seconds
    Timer 1 took 0.141 seconds
    


  • Danke.



  • Timer 0 took 3.531 seconds
    Timer 1 took 1.062 seconds
    

    windoofs, vs express (release, optimize for speed), etwas älterer PC
    vor beide 'int a' in der main noch ein 'volatile' davorgesetzt 😉

    edit: ohne volatile

    Timer 0 took 0.562 seconds
    Timer 1 took 0.391 seconds
    


  • pale dog schrieb:

    Timer 0 took 3.531 seconds
    Timer 1 took 1.062 seconds
    

    Ja, woran liegt's? was sagt die Disassembly? Ist das Ergebnis reproduzierbar?


  • Mod

    pale dog schrieb:

    Timer 0 took 3.531 seconds
    Timer 1 took 1.062 seconds
    

    windoofs, vs express (release, optimize for speed), etwas älterer PC
    vor beide 'int a' in der main noch ein 'volatile' davorgesetzt 😉

    füg mal noch

    #define _SECURE_SCL 0
    

    ein. Bereichsüberprüfungen wollen wir schließlich nicht ausmessen.



  • Konrad Rudolph schrieb:

    Ist das Ergebnis reproduzierbar?

    nö, 😞
    reproduzierbar ist etwa das:

    Timer 0 took 1.094 seconds
    Timer 1 took 1.078 seconds
    

    bei meinem ersten versuch haben wohl andere tasks dazwischengefunkt.
    🙂



  • camper schrieb:

    füg mal noch

    #define _SECURE_SCL 0
    

    ein. Bereichsüberprüfungen wollen wir schließlich nicht ausmessen.

    ändert nix, hatte schon vorher in den projekteinstellungen die bereichsüberprüfung ausgeschaltet 😉
    btw: mit volatile liegen bei mir beide etwa bei einer sekunde, ohne volatile hatte ich mal eben:

    Timer 0 took 0.016 seconds
    Timer 1 took 0 seconds
    

    da war wohl gerade scheduler- und interruptmässig nicht viel los 😉


Anmelden zum Antworten