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
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
Den Debugger hast du auch nicht, wenn du die exe einfach aus dem Explorer heraus startest.
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?
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
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.
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...
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?
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
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...