Zum Inhalt springen

[VB.Net] Performance steigern


Kaeyu

Empfohlene Beiträge

Hallo,

ich spiele aktuell ein wenig mit VB.Net rum. Habe mir eine Form gebaut die mir alle 10ms ein Bild (basierend auf PictureBox) erstellt, welches sich dann für 1000ms in der Form bewegt und sich dann selbst zerstört (eigene Klasse mit zusätzlichen Funktionen eines Timers).

Ab ca. 20 Bildern sinkt die Framerate drastisch. Von einem Ausgangswert von 60 krückt das Programm nurnoch auf etwa 29~30 rum und das ist kein schöner Anblick :rolleyes:

Anfangs hat das Programm bis zu 40 Mb Arbeitsspeicher verschlungen. Nach einigen Optimierungen frisst es nicht mehr wie 14 Mb. Transparenz ist in keinem Bild vorhanden. Bei den Bildern handelt es sich um eine .GIF-Datei die 59 Bytes klein ist. Double Buffer auf true macht nix.

Gibt es eine Möglichkeit, möglichst ohne DirectX oder anderen "Erweiterungen", die Performance zu erhöhen? Bzw. gibt es eine Möglichkeit die Grafikkarte hierfür einzubeziehen? Die Grafikkarte gurkt auf 0% Auslastung rum während das Programm läuft, daher wird sie sich wohl nicht um die Anzeige kümmern :D

Bevor jetzt wer meint "Hol dir halt nen schnelleren Prozessor": Eine CPU mit mehr als 2.7 Ghz je Prozessor als Quadcore sollte keine Mindestanforderung für ein Programm sein.

Hoffe auf Antworten^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

spricht was dagegen einfach ein animiertes Gif zu machen?

Schau dich hierzu ma dort um GiffiG.de - Erstellen von animierten Gif Bildern mittels Freeware

Solltest du nichts passendes finden, könntest du vllt hier noch Glück haben: GIF Animation: Software zum Animated GIF erstellen

Hoffe das hilft weiter.

ToolsDevler

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich vermute mal das Du die Ressourcen (also die Bilder) nicht wieder frei gibst. Wie erstellst Du denn Bild (Image - Objekt?) bzw. PictureBox? Du solltest beides mit Dispose() wieder freigeben wenn Du es nicht mehr brauchst (bzw. mit using instanziieren).

Vielleicht kannst Du ja die Stellen Code posten, wo Du die Bilder anzeigst?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es eine Möglichkeit, möglichst ohne DirectX oder anderen "Erweiterungen", die Performance zu erhöhen?
Warum schließt du die offensichtliche und vermutlich effizienteste Möglichkeit der Performancesteigerung von vornherein aus?

Ist deine Animation in irgendeiner Weise interaktiv? Falls nicht, könntest du das vorher rendern und dann hinterher einen Film abspielen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Doch klar, der Speicher wird wieder freigegeben. Das hatte ich beim ersten Versuch außer acht gelassen. Daher war das Programm anfangs immer auf bis zu 40 Mb gestiegen. Nun ist die Anfangsgröße ca 12 Mb und Endgröße maximal 14 Mb, nachdem 500 Objekte durchgerauscht sind.

Ja, die Bilder sind "interaktiv". Es erfolgt eine Tastenabfrage in einem bestimmten Zeitfenster bzw. in einem bestimmten Bereich im Fenster.

Ich weiß wohl, dass DirectX eine effektive und hierfür auch die wohl beste Methode ist. Allerdings habe ich zur Zeit 0 Zeit mich in dieses Thema einzuarbeiten - ist aber geplant ;)

Nur, solange diese Zeit nicht gekommen ist, wollte ich mal schauen ob es noch andere Lösungen gibt. Eine Alternative die mir heute eingefallen ist wäre es das Ganze mit GDI zu machen und die Tastenabfrage mit Hilfe von Vektoren und/oder Matrizen zu unterstützen oder die jeweilige Klasse um Koordinatenattribute zu erweitern, damit ich weiß welches Objekt grad wo ist.

Wieviel schneller es dann ist, ist eine andere Frage.

Bearbeitet von Kaeyu
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Sry für Doppelpost.

Thread kann geclosed/-löscht werden^^

Habe es mit GDI probiert und das sollte locker ausreichen. GDI nutzt ja die Grafikkarte - habs ausprobiert. Die Framerate sprengt schon jetzt alles was ich mir erträumt habe. Dann kann ich DirectX auch erstmal wieder abhaken - brauch ich bei dem Ergebnis nicht mehr ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...