Dynamische multidimensionale Arrays



  • Im Stack war das Array schnell erzeugt...

    An welcher anderen Stelle meinst du denn?
    Mit dem Debugger habe ich gesehen, dass die Erzeugung des Vektors SEHR lange braucht...

    Wie meinst du "struct Vektoren" ?

    Ich verwende als Vekor halt

    typedef float1D std::vector<float>
    typedef float2D std::vector<float1D>
    

    usw.



  • DarkShadow44 schrieb:

    An welcher anderen Stelle meinst du denn?
    Mit dem Debugger habe ich gesehen, dass die Erzeugung des Vektors SEHR lange braucht...

    und du bist nicht auf die idee gekommen, auf release zu stellen?!

    allerdings:
    wieso new? also was spricht gegen den stack?

    bb

    oder liegt das "langsam" daran, dass mein PC den RAM gerne auslagert ??
    Wie kann ich das (Programmspeziefik) verhindern ?

    ja - aber ganz so dumm ist windows dann doch nicht...
    verhindern kann man das imho nicht - falls dir aber ne windows-option auffällt, wo man ändern kann, dass er versucht, immer ewig viel ram freizuhalten, dann kannst du ja ma bescheid sagen... hab jz schon ewig damit zugebracht, so was rauszufinden... hab hier am laptop nur 2GB ram und keine lust, windows neu zu installieren(und win7 statt vista zu nehmen^^) und er versucht krampfhaft mind. 600MB frei zu halten - auch wenn er damit Millionen Seitenfehler in Kauf nimmt und so alles ausbremst...



  • eindimensional will ich es nicht machen, die vielen Dimensionen dienen der Übersicht

    Ich finde das aber uebersichtlicher:

    std::vector<Point3D>
    

    immer ewig viel ram freizuhalten, dann kannst du ja ma bescheid sagen

    Die Auslagerungsdatei ganz abschalten.



  • knivil schrieb:

    immer ewig viel ram freizuhalten, dann kannst du ja ma bescheid sagen

    Die Auslagerungsdatei ganz abschalten.

    Hab ich mir bisher immer verkniffen... Ist ja auch nicht gerade die Ausnahme, dass er sie wirklich braucht...
    Aber ich versuchs mal, wenn ich iwann mal rebooten sollten^^

    bb



  • Auslagerungsdatei ist aus, es wird aber immer noch ausgelagert 😡

    Ich finde das aber uebersichtlicher:
    C/C++

    std::vector<Point3D>
    

    Vektor 4D ist aber langsam...

    @unskilled:

    Wieso Release ?

    Und Stack ist zu klein... Außerdem verschenke ich jede Menge RAM wenn ich für JEDES model das maximun an Faces reservieren muss.



  • DarkShadow44 schrieb:

    @unskilled:
    Wieso Release ?

    Weil Compiler im Debug-Mode nichts Optimieren und noch dazu eine Menge Tests machen, die dir helfen sollen, Fehler frühzeitig zu finden...

    DarkShadow44 schrieb:

    Und Stack ist zu klein... Außerdem verschenke ich jede Menge RAM wenn ich für JEDES model das maximun an Faces reservieren muss.

    OK - zu klein könnte sein...
    Allerdings reservierst du doch jz auch für jedes Face das max.!?

    bb



  • Ich meinte z.B. für jedes Model 100 Faces, wenn es nur 4 hat sind die anderen verschenkt..

    Aber Release geht...

    Aber was macht der dann solange mit dem Vektor beim Debuggen ?



  • Ad aCTa schrieb:

    Woher kommt nur immer dieser dämliche Mythos, std::vector sei langsam.

    Weil er in einigen Situationen arschlahm *ist*.



  • unskilled schrieb:

    Weil Compiler im Debug-Mode nichts Optimieren und noch dazu eine Menge Tests machen, die dir helfen sollen, Fehler frühzeitig zu finden...

    Der gcc kann es. 🙂



  • DarkShadow44 schrieb:

    Ich meinte z.B. für jedes Model 100 Faces, wenn es nur 4 hat sind die anderen verschenkt..

    Aber Release geht...

    Aber was macht der dann solange mit dem Vektor beim Debuggen ?

    prüft die länge beim op[] etc - viele wirklich nützliche dinge!

    knivil schrieb:

    unskilled schrieb:

    Weil Compiler im Debug-Mode nichts Optimieren und noch dazu eine Menge Tests machen, die dir helfen sollen, Fehler frühzeitig zu finden...

    Der gcc kann es. 🙂

    ist das ein vorteil oder eher ein nachteil? : P

    bb



  • stl skeptiker schrieb:

    Ad aCTa schrieb:

    Woher kommt nur immer dieser dämliche Mythos, std::vector sei langsam.

    Weil er in einigen Situationen arschlahm *ist*.

    Ja, zum Beispiel wenn man ihn als Queue verwendet und von 3 Millionen Elementen ständig das erste löscht.

    knivil schrieb:

    unskilled schrieb:

    Weil Compiler im Debug-Mode nichts Optimieren und noch dazu eine Menge Tests machen, die dir helfen sollen, Fehler frühzeitig zu finden...

    Der gcc kann es. 🙂

    Optimieren kann der MSVC++ im Debug-Modus natürlich auch, entsprechende Optionen gibts in den Projekt-Eigenschaften. Nur glaube ich, dass das in vielen Fällen eher hinderlich ist, beispielsweise beim Schrittweise-Durch-den-Code-Schreiten.


Anmelden zum Antworten