Was ist eigentlich besser für die Performance? (Steuerelemente)

  • Allgemein

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Was ist eigentlich besser für die Performance? (Steuerelemente)

    Moin erstmal :) Das ist mein erster Post in überhaupt irgend einem Forum also bitte Fehler nicht zu sehr bestrafen :)

    Ich habe da mal eine Frage. Was ist besser für ein X beliebiges Programm ? Ist es besser die Steuerelemente selbst zu "platzieren" oder ist es besser sie während der Laufzeit zu generieren?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Vollkommen irrelevant, in beiden Fällen wird derselbe bzw. sehr ähnlicher Code ausgeführt, zumindest für WinForms. Aber für WPF dürfte das auch nicht sonderlich anders sein...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo

    @jvbsl Ich arbeite zwar nicht mit WinForms wie du weist aber mich würde das irgendwie auch interessieren. Mir ist soweit klar das es egal sein muss.
    Aber... ist es denn auch egal wann(!!) ich die controls erstelle??? Ich denke im Form_Shown ist die performance eine andere oder nicht?
    Kann das mal wer messen, irgendwie glaube ich das nicht. :/ Im Loading oder Initialize könnte ich es mir ja vorstellen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    Ich denke im Form_Shown ist die performance eine andere oder nicht?
    Nicht großartig anders, nur darf der User nun dabei zusehen, wie die Form Control für Control befüllt wird. Oder sie wird ohne Controls angezeigt, freezt bis alle Controlls erzeugt wurden, und taut dann wieder auf mit allen Controls, anstatt mit allen Controls fertig geladen aufzutauchen.
    Je nach art der Controls kann sich das sogar auswirken, aber bei solchen controls hält man das layouting/rendering für die Zeit des erstellens an und dann kommt es wieder auf dasselbe raus.
    Aber wie bereits über mir erwähnt freezt das ganze einfach, also warum sollte man überhaupt etwas in Shown machen?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Sir Sabri Richard II schrieb:

    Was ist besser für ein X beliebiges Programm ? Ist es besser die Steuerelemente selbst zu "platzieren" oder ist es besser sie während der Laufzeit zu generieren?
    Die Performance-Frage wird oft gestellt, gerne und mit Eifer beackert, ist aber leider meist - und so auch hier - vollkommen irrelevant.

    Die viel wichtigere Frage lautet:
    "Welches Programm kann ich besser warten: Eines, wo die Controls in Designern designed wurden, oder eines, wo hunderte von Zeilen BoilerPlate-Code immer mit-zu-untersuchen sind - Code, den der Designer sicherer, fehlerfreier, performanter schreibt, und auf den man sich - bis auf seltene Sonderfälle - blind verlassen kann?"

    Also Designer-Code ist vlt. nicht schön, aber ist performant, funktioniert, und ist ohne Memory-Leaks.
    Achja: Und vor allem ist er ausgelagert, sodass man beim wirklichen Coden sich viel besser auf die eigentliche Logik konzentriert, was ein Designer eben nicht kann.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    jvbsl schrieb:

    also warum sollte man überhaupt etwas in Shown machen?

    Danke für die Antwort. Hat mich nur interessiert. Mir ging es jetzt nicht darum WARUM man das machen sollte sondern ob es einen Unterschied machen würde.
    Obs jetzt Shown ist oder ein ButtonClick wo ich dann z.b. Controls nachlade ist ja jetzt nicht relevant. Mir ging es nur darum obs egal wäre in Punkt Geschwindigkeit.

    Meine frage ist somit zhufriedenstellen beantwortet!! 8o

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    Warum lädst du sie überhaupt nach?

    Nochmal, ich mache in WinForms gar nix und ich lade nicht nach, wie ich geschrieben habe hat es mich nur interessiert ob bereits mal jemand gemessen hat ob es hier unterschiede gibt. :thumbup:
    Es hat mich lediglich interessiert da ich es bis Dato nicht probiert und nicht gewusste habe, dennoch wissen wollte ob ja oder nein.
    Und, es gibt bestimmt Situationen wo nachgeladen/ausgetauscht werden müsste. Wenn du z.b. einen Raumdesigner programmierst 8o

    Ich wünsche euch einen schönen Abend.
    Grüße Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    Und, es gibt bestimmt Situationen wo nachgeladen/ausgetauscht werden müsste...
    Jo - das ist möööglich, aber eiglich nicht vorgesehen, und daher wird sowas in WinForms ziemlich schnell ziemlich hässlich (und u.a. deshalb gibt es Wpf ;) ).

    In WinForm ist Databinding ja auch der Königs-Weg - tickt aber bischen anders:
    Nämlich in Winforms sollen Controls nicht durch den gebundenen Datenfluss generiert werden, sondern die Controls bleiben wo sie waren, nur ihr Inhalt wird durch den Datenfluss generiert.
    WinForms-Controls belegen auch sehr viele Resourcen, erstellen sich vergleichsweise träge, und wenn man das dynamisch handeln will, hat man einerseits ganz schnell seine Anwendung gelähmt - weil ab einer recht endlichen Zahl wird das ganze System träge - andererseits sind solche Experimente auch immer und immer wieder gut für lausige Memory-Leaks.
    Danke @ErfinderDesRades. Das stellt mich soweit zufrieden. Hat mich nur interessiert.

    Grüße Leute
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    WinForms hat auch nicht den Ansatz, dass jedes Control wieder ein Container ist, so wie WPF. Ich meine in WPF ist ja quasi jedes Item in einer ComboBox wieder ein "Control", jedoch nicht im Sinne der WinAPI. In WinAPI ist jedes Control, welches Messages Empfangen kann auch nichts anderes als ein normales Fenster. Wenn dann Messages empfangen werden, dann wird das ganze in die ganze tiefe Struktur weitergeleitet über das Messaging-System, was bei tiefen strukturen und vielen invalidierungen das ganze sehr Träge macht.

    WPF hat jedoch nur ein Window-Handle und innerhalb von diesem wird alles von einem eigenen Renderer gezeichnet, das ganze sogar noch HW-beschleunigt.
    Wenn man jetzt in WinForms hingeht und dasselbe macht und einfach alles mit GDI+ zeichnet, dann kann man dadurch Geschwindigkeitsmäßig sehr nahe an WPF herankommen, oder wenn man es auch mit DirectX/OGL/Vulkan macht könnte man sogar performanter werden^^

    Deshalb geht man aber auch hin und zeichnet bei Custom-Controls in WinForms oft vieles selbst und erstellt keine Controls im Control im Control...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    Deshalb geht man aber auch hin und zeichnet bei Custom-Controls in WinForms oft vieles selbst

    Ja, das hat mich immer gestört. Sicher, wenn man es raus hat gehts, aber wollte man mal ein Control haben so wie man es sich eben selbst in seiner Fantasie vorstellt musste man es selbst zeichnen, so ein gefrickel oder?
    Sicher, wenn mans raus hat geht auch das ziemlich schnell, aber naja, geschmacksache. :sleeping:
    Ich bin jetzt auch gar nicht der Typ für verspieltes Design und übertriebene Optikänderungen, da ich meist CRUD Anwednungen schreibe welche rein auf Business zielen, würde ich nie ins verspielte gehen, dennoch hat man iwe du schon geschrieben hast mit Controls in Controls ind Controls sehr viele möglichkeiten. Man nehme nur eine popelige ListBox her welche verschiedene Typen ganz verschieden Rendern kann je nachdem was sich dahinter verbirgt.
    Einfach, übersichtlich und ohne viel Boilerplate-Code.

    OK, aber ich drifte ja schon wieder ab und das gehört wiedermal nicht hier her. Sorry :/

    Danke jederfalls euch allen für die erklärungen, auch wenn ich mit WinForms nix mehr mache ist es ja immer gut etwas zu lernen. Ich versuche immer meine Fühler überall auszustrecken und bin offen für alles.

    Schöne Grüße aus Österreich
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##