Programm Laggt Extrem auf Win8 aber nicht auf Ein XP waurm ?
Übersicht

Bobo2040Betreff: Programm Laggt Extrem auf Win8 aber nicht auf Ein XP waurm ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi ^^
Ich habe nen Programm ist noch nix großes oder so (>1mb) und es läuft auf meinem relativ schlechten PC einwandfrei und ohne laggs ok manchmal stürtzt es ab ... aber das liegt an meinem PC ![]() Aber ein Kumpel von mir hat nen guten Win8 PC bei ihm Stürzt das Spiel zwar nicht aber aber es laggt extrem stark... und auf meinem WinXP PC zieht es zwar nicht viel ram ~10-20mb aber dafür bei 2,8Ghz im schnitt 70% CPU leistung .... ich habe so oft es möglich war delay benutzt ... gibts da noch andere wege das Programm schneller und Ressourcensparender zu machen ? Und ist das normal das Programme auf Win8 laggen die mit BlitzPlus Compiled sind ? |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Viel helfen kann ich dir leider nicht.
Zum einen Theorie: BlitzPlus sowie BB verwenden, meines wissens nach, noch irgendwas um DX7 rum. Das ist schon sowas von alt, das es mich wundern würde, wenn W8 da noch ohne mucken mit arbeitet - welcher teenie ärgert sich nicht über irgendwen älteres? ![]() Dh es kann durchaus sein, das du ohne komplexe workarruonds da nichts machen kannst. Zum anderen kann es sein, das es sehr wohl an deinem programmaufbau liegt. die 2,8 Ghz mit 70% last machen mich stutzig. In blitzmax zumindest ist es so, das Delay sowas ist wie.. BlitzMax: [AUSKLAPPEN] Delay(100) nur ums grob mit pseudocode zu veranschaulichen: Obwohl man das programm wissentlich ausbremst, kriegt das system keine mitteilung, das der prozessor noch was anderes bis zum nächsten takt machen darf -> 100% auslastung. du solltest dir mal timer anschauen: Zeit und Zufall und dort ganz speziell: CreateTimer sowie Waittimer Allerdings: Wie die hilfe schon sagt, arbeitet das ganze mit Frequenzen, genauer Taktung pro sekunde. Ein Timer mit 60 frequenz feuert also 60x die sekunde sein event - oder anders gesagt: ein Timer mit 60 freq. gibt dir ein maximum von 60 FPS (falls fps aus spielen eher bekannt ist) Du solltest umbedingt versuchen, Delay zu vermeiden, wenn diese wie in blitzmax arbeiten (wovon ich stark ausgehe), stattdessen kann ein einzelnes Waittimer() vor dem ende der hauptschleife wahre wunder bewirken. Beinahe jedes programm, was nur ein bisschen was darstellt, braucht so <1% cpu auslastung. Umkehrschluss: Es bleibt mehr ressourcen für andere programme übrig, was evtl auch bei dem W8 problem helfen kann. aber nur der teufel weiß wie w8 funktioniert - bzw ich jedenfalls nicht. Mein rat: Bottlenecks (flaschenhälse) in der programmierung suchen und mal einen krassen performanceboost einbauen und erneut probieren. Funktioniert das nicht, schlachte dein programm mal aus (wegfindungen etc, alles raus. nurn bisschen grafik darstellen!) und tests erneut auf W8, um den DX7 part mal auszutesten. |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay danke erstmal das mit dem waittimer probier ich morgen direkt aus *_* hoffe dann klappts besser ![]() und was meinst du mit ausschlachten ? win8 ? das geht glaube ich nicht weil er das nicht machen würde... und der pc ist noch recht neu ca. 5monate ich schreibe nachher oder morgen mal den mircosoft support an vllt. haben die eine lösung ![]() |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit dem Ausschlachten war dein Programm gemeint. Die Idee ist, heraus zu finden, was in deinem Programm so ewig lang braucht.
Dazu kommentierst du einfach einen Teil nach dem Anderen aus, und schaust, ab wo das Programm schlagartig schneller läuft. Dann hast du den Code-Teil, der Ärger verursacht. Dazu kann auch sowas helfen: BlitzBasic: [AUSKLAPPEN]
Auf die Art testest du jeden Teil des Codes und kannst somit sehen, was wie viel braucht. Insgesamt sollte ein Hauptschleifendurchlauf nicht mehr als 15-20 ms brauchen |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jap genau.
Ausschlachten meint dein Programm: Lege eine sicherheitskopie an und werf erstmal alles, was unnütz ist, raus. Ich würde mein hauptaugenmerk erstmal darauf legen, pur die grafik zu testen. Je nach art des programmes können es tausende sachen sein: - BB kann unter W8 einfach nichtmehr richtig dargestellt werden - Bei einer Tilemap / isomap wird weit mehr gezeichnet als tatsächlich sichtbar ist. - Es gibt diverse schnickschnack sachen, wie rauch und hunderete Grab images. Die unterschiede zwischen W8 und WinXP kann ich mir so erklären, das Dx7 unter W8 nurnoch emuliert wird. (vermutung, unbestätigte aussage) Das würde bedeuten, das du eine absolute minimum-form des Renderns brauchst und viel mit der CPU vorprüfst ![]() |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay ![]() Hab übrigends eben dem Microsoft support geschrieben ![]() Und ausschlachten kann ich das grad nicht also auschlachten ja aber nicht auf win8 testen weil mein kumpel nicht da ist... der ist grad beim Paintball Spielen *_* |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal geschaut was Sache ist: DirectX 7 wird nicht emuliert, sondern gewrappt, will heißen, dass DirectX 7-Befehle quasi auf äquivalente Befehle in dem jeweils installierten DirectX gemappt werden.
Das sollte generell kein Problem sein, kann aber mit speziellen Befehlen doch zu Problemen führen, da das Wrapping wohl anscheinend nicht immer so perfekt arbeitet. Soweit ich mitgekriegt hab, ist z.B. ImagesCollide ein so ein Kandidat. Ich tippe immer noch viel eher auf unsauberen Code als auf böses Windows 8, vor allem, wenn man bedenkt, wie es (nicht böse gemeint) um Bobos Programmierfähigkeiten steht. (Wirklich nicht böse gemeint. Jeder hat mal angefangen.) |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich weiß das ich nen Bob bin ![]() Ich hab vor 4 Tagen das erste mal von Blitzbasic gehört... ![]() Und noch nicht großartig viel gemacht ^^ Ich hab meinem Code schon überarbeitet teste ihn Morgen oder Heute bei nem Kumpel aufm PC ![]() Microsoft Support hat noch nix geschriebn ![]() |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie gesagt, das hab ich nicht böse gemeint, ist ja klar, dass du nach vier Tagen noch kein WoW raus schmeißt ![]() Auch wundert es mich nicht, dass Microsoft dir nicht geantwortet hat. Die tun das nur wenn es ihnen daran liegt, also bei bekannten Entwicklern oder wirklich wichtigen Problemen. Dass Dx7-Programme nicht mehr so gut auf Win8 rennt, das ist denen kaum mehr wichtig. Die letzte Version von Dx7 ist im September 2000 heraus gekommen, also jetzt schon fast 13 Jahre her. Support dafür ist auch schon seit einer guten Weile ausgelaufen. Es ist gut, dass du so kräftig dabei bist. Nimm's hald mal ein wenig ruhiger ![]() |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jo ![]() Ich versuchs... aber den "traum" das Spiel zu verwirklichen habe ich schon seit knapp 6 Monaten ... habe mit C# Angefangen - Zu anspruchsvoll , dann Unity , Flash aber das war alles nix für mich ![]() Und dann jetzt halt BlitzPlus/Basic ![]() Findes relativ leicht zu erlernen nur ist die Fehler anzeige wenn es nen Syntax Fehler gibt nicht sehr hilfreich ![]() Ne zeilenangabe oder so wäre besser ^^ So wie in PHP oder so... EDIT: Habe jetzt mal die Geschwindigkeit getestet und bei beiden Codeabschnitten hats zwischen 0 und 1 ms geschwankt.... EDIT2: Habes jetzt auch bei der Hauptschleife getestet da Schwankt es Zwischen 30-50ms also eindeutig zu viel.... |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Direct Draw, (was du benutzt um die 2D Grafiken zu zeichnen) wird nurnoch emuliert. Und zwar langsam. (vorallem bei Windows 8)
Dagegen kannst du auch nicht viel tun, außer sparsam mit dem Zeichnen von Bildern, ect auf dem Bildschirm sein ![]() MFG |
||
Twitter
Download Jewel Snake! Windows|Android |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du bist lustig ![]() Gibts dazu nen Emulator für Win8 oder sowas ? Weil ich mache das Spiel eig. nur für meinem Besten Freund, Guten Kumpel und mich... Und mein Bester Freund hat Win8 und mein Guter Kumepl auch ^^ Hab übrigends mich WaitTimer Das Script um ca. 15ms beschleunigt braucht jetzt nur noch 20-30 ms... ist mir aber immer noch zu langwsam .. wenn ich bedenke das da noch TCP angreifen NPC's mehrere Maps geben soll... gibts da noch ne möglichkeit das Script schneller zu machen ? mfg |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Tankbuster: Nein, es wird nicht emuliert. Emulatoren sind laut Wikipedia Soft- oder Hardware, die ganze Computer nachbilden. Dort wird z.B. WINE explizit aus den Emulatoren ausgenommen, da dabei nur die Softwareschnittstellen gewrappt werden. Ist also etwas anderes als ein Emulator.
DirectDraw wird genauso gewrappt. Befehle werden auf die nächstmöglichen Passenden umgemapt, oder falls das nicht möglich ist, durch andere quasi nachgebaut. So wird z.B. statt dem direkten Zugriff auf den Framebuffer ein direkter Zugriff auf ein Surface oder eine Textur gegeben, und diese dann auf den Framebuffer geladen. Das ist kein Emulator, sondern eine Kompartiblitätsschicht oder ein Wrapper. Es gibt dazu keinen Emulator auf Windows 8, weil was dabei passiert ist eben das, was ich beschrieben habe. Auf Windows 8 ist DirectX 11.1 oder 11.2 standardmäßig installiert. Beide von denen haben von sich aus kein DirectDraw mehr (das war das letzte Mal regulär in DirectX 6, und als depreciated in DirectX 7). Wenn dein Programm DirectDraw über DirectX 7 haben will, dann kriegt das das DirectX 11 mit, und wrappt die Befehle automatisch. Würde es das nicht tun, dann würde dein Programm auf DirectX 11/Windows 8 gar nicht laufen! Das Wrappen kostet Rechenzeit, und zwar vor allem deswegen, weil Optimierungen, die in DirectDraw wirklich gut funktionieren, in DirectX 11 extrem langsam brauchen. Deswegen braucht der Grafikteil und nur der Grafikteil deines Programmes unter Windows 8 mehr Rechenzeit als unter Windows 2000. Windows 2000 ist nämlich die letzte Windows-Version, auf der DirectX 7 und damit DirectDraw direkt und ungewrappt verfügbar war. Seit dem (also ab Windows XP / DirectX 8) ist DirectDraw nur noch über den Wrapper verfügbar. So, jetzt mal alles von der Leber geschrieben, hoffe es hilft irgendwem. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ![]() Aber ich habe Direct 9 ![]() |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es wäre z.B. auch möglich, dass bei ihm die Hardwarebeschleunigung für DirectDraw deaktiviert ist. Das könnte er Mal mithilfe von dxdiag.exe nachschauen. Zweites Tab (Anzeige).
Es geht manchmal nicht darum, wie alt eine Hardware/Software ist, sondern oft auch darum, ob sie für einander ausgelegt sind. Hardware wird meistens so optimiert, dass die Funktionen, die am meisten benützt werden, weniger Zeit in Anspruch nehmen - wenig genutzte Funktionen werden nicht optimiert und bleiben zurück (ob das bei Grafikkarten genauso ist, kann ich nicht wirklich sagen, aber für CPUs ist das richtig). Eine Sache, die bei sowas immer interessant ist, ist, ob es im Vollbildmodus auch langsam ist. Kommt jetzt darauf an, was dein Programm ist und ob es bisher im Fenstermodus gearbeitet hat. Denn im Vollbildmodus kann nochmal Geschwindigkeit dazukommen. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um die Geschwindigkeitprobleme zu finden benötigst Du mehr als eine Messstelle. Gemessen wird in der REPEAT/UNTIL Schleife:
BlitzBasic: [AUSKLAPPEN] Repeat Beginne zunächst mit 3 Stellen und dort wo kaum Unterschiede zur vorherigen Stelle sind (1-2msec) forscht Du nicht weiter. Dort wo große Unterschiede zur vorherigen Stelle sind (>10msec) fügst Du drei weitere DEBUGLOG ein. Und irgendwann hast Du die Problemstelle eingekreist. Willst Du das ganze auch auf dem Rechner des Freundes testen machst Du es mit TEXT statt DEBUGLOG. Dann kann er die Ergebnisse auch als Laie melden: BlitzBasic: [AUSKLAPPEN] Repeat Alles andere ist "Stochern im trüben Teich"... 99% aller Probleme verursacht der Programmierer, nicht der Rechner oder das System! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay gut ![]() Im vollbildmodus hab ichs noch nicht getestestet werd ich aber heute noch tun ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group