Maximale Laufzeit verändern?



  • Erstmal dankeschön für die schnellen Antworten.

    Mechanics schrieb:

    CppKnecht schrieb:

    Der Code ist soweit richtig

    Falsch.

    CppKnecht schrieb:

    Kann mir jemand sagen, wie ich die maximale Laufzeit verändern kann?

    Es gibt keine maximale Laufzeit. Dein Code ist sicher von vorne bis hinten falsch. Wahrscheinlich hast du das ganze auch komplett falsch implementiert und bei einer besseren Implementierung würde der Algorithmus wesentlich schneller durchlaufen.

    Gut zu wissen, dass es keine Laufzeitbeschränkungen gibt...trotzdem kommt diese Meldung bei anz_ite=7, aber bei 6 nicht.
    Eigentlich muss das ganze auch mit h=1000 und kappa=4500 bei anz_ite=100 durchführen.

    Übrigens ist das nur ein Auszug aus meinem Programm, weil angefangen haben alles Schritt für Schritt zu checken...aber hier hakt es schon.

    Hacker schrieb:

    CppKnecht schrieb:

    "This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information."

    Äh, das ist, was kommt, wenn eine Exception geworfen wird und kein entsprechendes catch() gefunden wird. Zeig Code.

    Eigentlich habe ich keinen try block eingefügt, also sollte auch kein catch() verlangt sein. Außer es passiert bei der Normalverteilung bei boost, was ich nicht glaube, da es ja auch bei anderen funktioniert.

    Mechanics schrieb:

    CppKnecht schrieb:

    Der Code ist soweit richtig

    Falsch.

    CppKnecht schrieb:

    Kann mir jemand sagen, wie ich die maximale Laufzeit verändern kann?

    Es gibt keine maximale Laufzeit. Dein Code ist sicher von vorne bis hinten falsch. Wahrscheinlich hast du das ganze auch komplett falsch implementiert und bei einer besseren Implementierung würde der Algorithmus wesentlich schneller durchlaufen.

    Man kann es mit Sicherheit schneller gestalten, aber da habe auch einfach nicht die Erfahrung...und bald keine Zeit mehr 😞

    ghf schrieb:

    CppKnecht schrieb:

    Kann mir jemand sagen, wie ich die maximale Laufzeit verändern kann?

    weniger ein und ausschalten.

    Was meinst du damit?



  • Bashar schrieb:

    Ich würde sagen dein Speicher läuft irgendwann voll, weil du die Elemente von Z_Handler nie deletest.

    Warum sind da eigentlich Kommentare mit std::vector usw. drin? Das wäre der Code den du eigentlich schreiben solltest ...

    Ich delete doch Z_Handler am Ende von main()... es ist auch innerhalb der letzten schleife, sodass bei jedem Durchlauf der Speicher wieder frei gegeben wird. Oder lieg ich falsch?

    Mechanics schrieb:

    👍 👍 👍

    Super. Einfach den ganzen Code reinhauen, auch noch unformatiert. Wir sind alle begeistert.

    Sorry für das Nicht-Formatieren.



  • CppKnecht schrieb:

    Bashar schrieb:

    Ich würde sagen dein Speicher läuft irgendwann voll, weil du die Elemente von Z_Handler nie deletest.

    Warum sind da eigentlich Kommentare mit std::vector usw. drin? Das wäre der Code den du eigentlich schreiben solltest ...

    Ich delete doch Z_Handler am Ende von main()

    Warum muss man eigentlich immer alles zweimal schreiben? Die Elemente von Z_Handler deletest du nicht.

    double** Z_Handler=NULL;
    Z_Handler = new double*[h];    // <- wird deletet
    int w = 0;
    for (int i=0; i<h ; i++)
    {
      d = D[i];
      w = static_cast<int>(d);
      Z_Handler[i] = new double [w];  // <- wird nicht deletet
      cout << clock() << " ";
    }
    


  • und warum kommentierst du den tollen std::vector aus?



  • Bashar schrieb:

    CppKnecht schrieb:

    Bashar schrieb:

    Ich würde sagen dein Speicher läuft irgendwann voll, weil du die Elemente von Z_Handler nie deletest.

    Warum sind da eigentlich Kommentare mit std::vector usw. drin? Das wäre der Code den du eigentlich schreiben solltest ...

    Ich delete doch Z_Handler am Ende von main()

    Warum muss man eigentlich immer alles zweimal schreiben? Die Elemente von Z_Handler deletest du nicht.

    double** Z_Handler=NULL;
    Z_Handler = new double*[h];    // <- wird deletet
    int w = 0;
    for (int i=0; i<h ; i++)
    {
      d = D[i];
      w = static_cast<int>(d);
      Z_Handler[i] = new double [w];  // <- wird nicht deletet
      cout << clock() << " ";
    }
    
    for(int i=0;i<h;i++)
            delete Z_Handler[i];
        delete[] Z_Handler;
    

    Ich delete es jetzt, aber funzt noch immer nicht.

    otze schrieb:

    und warum kommentierst du den tollen std::vector aus?

    Weil es mit dem vector auch nicht geklappt hat. Es bricht dann sogar bei einer geringeren Iteration ab.



  • Irgendwas stimmt an der Logik nicht. get_Demand kann dir auch negative Werte liefern. Wenn du das dann als Größe für ein double-Array benutzt, geht das natürlich in die Hose.



  • CppKnecht schrieb:

    Hacker schrieb:

    CppKnecht schrieb:

    "This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information."

    Äh, das ist, was kommt, wenn eine Exception geworfen wird und kein entsprechendes catch() gefunden wird. Zeig Code.

    Eigentlich habe ich keinen try block eingefügt, also sollte auch kein catch() verlangt sein.

    Nein, wenn du keinen try-Block einfügst dann kommt es auch (bei jeder Exception).



  • MFK schrieb:

    Irgendwas stimmt an der Logik nicht. get_Demand kann dir auch negative Werte liefern. Wenn du das dann als Größe für ein double-Array benutzt, geht das natürlich in die Hose.

    Ja!!! Du hast recht! Das war der große Fehler!
    Ich habe es folgend behoben:

    double a=0;
        for (int i=0; i < h; i++)
        {
            a=get_Demand();
            if (a>=0)
            {
                D[i] = a;
                D[i] = Round (D[i], 0);
            }
            else
            D[i]=0;
        }
    

    Ich werde gleich gucken, ob der Rest des Programms funzt. Wenn nicht, dann werde ich mich noch mal melden. An sonsten ein großes Dankeschön an alle, die kommentiert haben! Vor allem MFK und Bashar! 🙂



  • CppKnecht schrieb:

    otze schrieb:

    und warum kommentierst du den tollen std::vector aus?

    Weil es mit dem vector auch nicht geklappt hat. Es bricht dann sogar bei einer geringeren Iteration ab.

    Dann liegt es natürlich am std::vector und garantiert nicht daran, dass du etwas dummes tust. Fürs nächste mal: an einer Stelle wo std::vector steht, kannst du keine Speicherlecks erzeugen. Strebe Einfachheit des Codes an. Das beinhaltet gut getesteten Code von anderen zu verwenden, anstatt den Eigenen.



  • otze schrieb:

    CppKnecht schrieb:

    otze schrieb:

    und warum kommentierst du den tollen std::vector aus?

    Weil es mit dem vector auch nicht geklappt hat. Es bricht dann sogar bei einer geringeren Iteration ab.

    Dann liegt es natürlich am std::vector und garantiert nicht daran, dass du etwas dummes tust. Fürs nächste mal: an einer Stelle wo std::vector steht, kannst du keine Speicherlecks erzeugen.

    Doch, wenn man so dumm ist und das aufruft. 🤡


Anmelden zum Antworten