Laden...

Erzeugtes Programm extrem langsam

Erstellt von DavidT vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.190 Views
DavidT Themenstarter:in
998 Beiträge seit 2007
vor 16 Jahren
Erzeugtes Programm extrem langsam

Hallo, ich habe einen MJPEG-Parser in C# geschrieben, mehr oder weniger nach einer ANleitung die extrem gut Funktioniert und vor allem schnell ist (bis zu 33 Frames/s).
Nun habe ich das wie gesagt selbst geproggt und keine grossartigen Änderungen gemacht, die das original beeinflusst haben.
Nun bekomme ich mit meiner aus VS gestarteten Version 2 (!!!) FPS hin! Wie kann das sein? Sind in VS irgendwelche Einstellungen oder Zusatzdaten die meinem Programm hinzugefügt werden (debuginformationen) oder so, die das ganze langsam machen? Weil das kann doch irgendwie nicht sein, oder?

Danke im Voraus.

Gruß David

_
83 Beiträge seit 2007
vor 16 Jahren

Hallo,

Sind in VS irgendwelche Einstellungen oder Zusatzdaten die meinem Programm hinzugefügt werden (debuginformationen) oder so, die das ganze langsam machen? Weil das kann doch irgendwie nicht sein, oder?

Ja, die erstellte Anwendung wird vom Visual Studio Debugger "überwacht" (vshost Prozess), einen Geschwindikeitsvorteil bekommst du wenn du auf Release komplilierst, aber dann hast du keinen Debugger mehr.

_ms

R
494 Beiträge seit 2006
vor 16 Jahren

Den Debugger hast du auch nicht, wenn du die exe einfach aus dem Explorer heraus startest.

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 16 Jahren

Danke euch beiden, ich habe den eigentlichen Fehler für das Programm gefunden, kann eure Tips aber trotzdem gut gebrauchen 🙂
Ist der Code mit Debuginfos wirklich so viel langsamer als ohne?

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo DavidT,

Ist der Code mit Debuginfos wirklich so viel langsamer als ohne?

nicht zwangsläufig, aber denkbar/möglich ist sowas in bestimmten Fällen/Konstellationen schon.

herbivore

5.742 Beiträge seit 2007
vor 16 Jahren

Hallo DavidT,

wie viel Arbeitsspeicher hast du denn in deinem PC? Vielleicht verbraucht VS einen Großteil davon, sodass während der Programmausführung immer Daten aus dem Arbeitsspeicher auf die Festplatte ausgelagert werden müssen. Das verlangsamt den Bertieb natürlich sehr.

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 16 Jahren

2048 MB bei WinVista... Ist net viel für das os, aber er hat keinerlei Festplattenzugriffe und verursacht nur 8% Prozessorauslastung... Ist mir ein Rätsel...

40 Beiträge seit 2007
vor 16 Jahren

Original von DavidT
Danke euch beiden, ich habe den eigentlichen Fehler für das Programm gefunden, kann eure Tips aber trotzdem gut gebrauchen 🙂
Ist der Code mit Debuginfos wirklich so viel langsamer als ohne?

Ich dachte du hast den Fehler gefunden?

5.657 Beiträge seit 2006
vor 16 Jahren

Es ist tatsächlich so, daß die Programme in der IDE wesentlich langsamer laufen, da im Hintergrund viele Überprüfungen und Debug-Ausgaben ablaufen.

Ist der Wert von 8% innerhalb der IDE oder wenn du das (als Release!) kompilierte Programm aus dem Explorer startetst?

Das klingt wirklich sehr merkwürdig, aber ohne weitere Infos, wie dein Programm funktioniert können wir dir jetzt auch nicht weiterhelfen.

Du kannst aber selbst herausfinden, wo der Flaschenhals in deiner Anwendung steckst, indem du einen Timer einbause, und dir für jede Funktion die Ausführungsdauer mitloggen läßt, z.B. indem du DateTime.Now.Ticks verwendest oder die entsprechenden API-Funktionen, die auf eine Millisekunde genau sind.

Weeks of programming can save you hours of planning

3.971 Beiträge seit 2006
vor 16 Jahren

Schau dir vllt. mal die kostenlose Testversion von Ants Profiler an. Das zeigt dir wie lang eine bestimmte Funktion oder auch das ganze Programm zur Ausführung braucht, welche Funktion am meisten Zeit verbraucht. Infos über Speicherauslastung usw. Das schöne, du brauchst keine Quellcode hinzufügen, sondern lädst eine fertige kompilierte Datei (PDB-Debugginformationen müssen vorhanden sein)

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...