Programm wird langsamer



  • kann ich beiträge löschen wenn noch niemand geantwortet hat?



  • Nein, Beiträge kannst du hier nie löschen.

    BTW: Kann es sein, dass nur die Ausgabe das Problem ist? Also das Ausgeben von Zeichen in der Konsole länger/kürzer dauert? Die Ausgabe wird nämlich gepuffert...

    MfG SideWinder



  • Danke, werde das mal überprüfen.
    Habe jetzt mal Waitable Timer Objects statt Sleep() reingenommen, es sind aber keine zeitlichen Unterschiede messbar (bzw die Sleep()Version ist einige Millisekunden schneller).



  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo Zaus,

    vieleicht hilft die Funktion:

    int _set_sbh_threshold(
       size_t size 
    );
    

    weiter.

    Hintergrund ist Heapfragmentierung und mehr.
    Das kann passieren, wenn viele kleine Objekte auf dem Heap angelegt werden.

    Viel Erfolg, Gruß Frank



  • Also an der Ausgabe kann es eigentlich nicht liegen, da die ja auch in dem Test ohne die Sleep() Funktion noch drin war und es trotzdem ohne große Verzögerung lief.

    zu _set_sbh_threshold:
    Versteh ich das richtig, dass ich damit die Grenze setzen kann bis zu welcher Größe die Objekte im small-block heap abgelegt werden und ab welcher Größe im "normalen" heap?
    Wenn ja auf welchen Wert sollte der threshold gesetzt werden? Ich erzeuge übrigens an keiner Stelle meines Code ein Objekt dem ich mit new manuell Speicher zuordne...

    Gruß Zaus



  • Hallo Zaus,

    Schau mal unter
    http://msdn.microsoft.com/en-us/library/a6x53890%28VS.80%29.aspx
    früher (win95, 98, nt) wurde der small-block heap
    mit einer default threshold size von 1016 verwendet.
    Heute (win2000++) ist der small-block heap per Default abgeklemmt.

    Wir hatten so ein ähnliches Phänomen schon mal,
    das Programm wurde beim nächsten Neustart deutlich langsamer,
    unter Windows, unter Linux jedoch nicht.

    Hat übrigends nicht direkt was new und delete zu tun.
    std::string und stl container arbeiten intern auch mit dem heap.

    Probier es mal, vieleicht hilft es.

    Gruß Frank



  • Vielen Dank für die Erklärung, werde es auf jeden Fall mal testen.
    Gruß Zaus



  • Leider bringt auch _set_sbh_threshold keinen Effekt.
    Außerdem habe ich alle Sleep() Befehle durch waitable timer objekts ersetzt.
    Auch an cout<< kann es nicht liegen, die wurden auch entfernt.

    Der "Ruck" ist auch umkehbar, habe jetzt den PC angelassen und noch ein paar unbedeutende Änderung am Programm vorgenommen und auf einmal sind die Zeiten wieder wie sie sein sollten... Ich hab echt keine Ahnung an was das liegen könnte.



  • Das Problem besteht immer noch. Auch auf anderem Betriebssystem, Visual Studio Version und Hardware...
    Kann es sein, dass Speicher nicht wieder richtig freigegebn wird wenn das Programm beendet wird indem wärend es läuft das Fenster geschlossen wird (oder auch mit dem exit Befehl?

    Danke für eure Hilfe
    Gruß Zaus


Anmelden zum Antworten