deque oder list (logsystem)



  • camper schrieb:

    accumulate-test schrieb:

    vector: 0.81543 Ticks/Elem *** -797890978***
    deque: 0.874023 Ticks/Elem *** -797890978***
    list: 0.810425 Ticks/Elem *** -797890978***

    wie erklärt ihr euch das? Oo



  • unskilled schrieb:

    camper schrieb:

    accumulate-test schrieb:

    vector: 0.81543 Ticks/Elem *** -797890978***
    deque: 0.874023 Ticks/Elem *** -797890978***
    list: 0.810425 Ticks/Elem *** -797890978***

    wie erklärt ihr euch das? Oo

    Erstmal gar nicht.
    Welcher Compiler?
    Ist der Fehler wiederholbar?
    Ist der Release-Modus an, bzw NDEBUG definiert und -O3?


  • Mod

    volkard schrieb:

    ps: #ifndef __WIN32__ wäre richtig gewesen.

    wie gesagt: war nur schnell hingeschrieben. War zu faul nachzuschauen, wieviele Unterstriche dieses Symbol braucht, bei gcc hatte ich es im Kopf.

    Nebenbei: Die Visual C++-Version läuft unter Win XP mit einem X6800 (alle Optimierungen an)
    Die g++-version unter Gentoo 64bit mit eine Q9650 @ 3.3Ghz, um die Werte grob vergleichbar zu machen, sind die nanosec-Angaben also mit 3.3 zu multiplizieren.
    Aufruf mit g++ -O3 -lrt test.cpp

    accumulate-test schrieb:

    wie erklärt ihr euch das? Oo

    Das sind ca. 135 Prozessortakte bezogen auf den kompletten accumulator-Aufruf. Das ist zuwenig, als dass man das die Iteratorimplementation zurückführen könnte. Den Grund findet man mit ein wenig Forschung sicher heraus, ich würde darauf tippen, dass es damit zu tun hat, wie der jeweilige Code im Speicher ausgerichtet ist - wenn man also Tests vertauscht, ändert sich vielleicht etwas. Da versucht wird, den schnellsten Durchgang zu ermitteln, kann es jedenfalls eigentlich nicht auf kalten Cache oder ähnliches zurückzuführen sein.
    Wer Spass daran hat, kann ja versuchen, das herauszufinden.


Anmelden zum Antworten