Gui langsamer als Konsole?



  • Hallo Leute!

    Nach 3 tagen Googeln und Foren wälzen wende ich mich mal an euch.

    Ich habe ein Rechenprogramm als Konsolenanwendung geschrieben, in dem u.a. ein sehr großes Gleichungssystem (2500x2500) mit LU-Zerlegung gelöst wird. In der Konsole dauert die Berechnung ca. 1min. Das nur mal als Referenz.

    Jetzt wollte ich mir eine Gui mit dem Turbo C++ bauen. Die Gui besteht bis jetzt nur aus 7 Editfeldern für die Eingabewerte und einem Button um die Berechnung zu starten. Sonst nix. Also absolute Grundlagen.
    Habe den Code von meim Konsolenprogramm in

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    }

    eigefügt und er wurde auch (nach ein paar kleineren Anpassungen) ohne Fehlermeldungen kompiliert.
    Die Ausführung des Programms dauert jedoch 45min. Das Ergebnis ist aber richtig.

    Warum dauert es so lange? Mach ich was grundsätzliches falsch, damit die Performance so leidet? Was kann ich verbessern?

    Leider sind meine Kenntnisse in Gui erstellung noch sehr dünn, hoffe aber trotzdem auf eine Antwort die mich weiterbringt.

    Vielen dank schon mal



  • Greifst du während der Berechnung auf das UI zu, oder erfolgt die Benutzerinteraktion erst wieder nach dem Abschluß der Berechnung?

    Und was passiert, rein interessehalber, wenn du die Berechnung in einem Hintergrundthread ausführst?



  • Ist das GUI-Projekt zufällig als Debugbuild und die Konsolenanwendung als Release gemacht worden?



  • Hi Witte!

    Da sprichst was an... Moment.
    Die Konsolenanwendung ist mit Visual C++ Express als Release erstellt worden. Kenne mich mim Turbo C++ noch ned so gut aus, aber ich glaube unter Debug. Wo kann man das denn umschalten bzw einsehen?
    Ich informier dich derweil noch mal genauer.
    Aber danke schon mal für den Anstoß!

    @audacia
    Die Benutzerinteraktion sollte erst wieder nach erfolgter Berechnung erfolgen.



  • Debug- und Release-Build kannst du in den Projektoptionen konfigurieren.

    Allerdings klingt das eher so, als verlasse sich der Code auf eine gewisse Compileroptimierung, die der MSVC durchführt und der BCC nicht. Ist der Code quelloffen, oder ist es dir möglich, diesen zu posten?


Log in to reply