Hohe Geschwindigkeit!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Tankbuster

Betreff: Hohe Geschwindigkeit!

BeitragFr, Feb 16, 2007 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal einiege dumme Fragen von mir...^^
Aber bitte nicht über sie lachen, denn hab mir schon ein bisschen länger darüber gedanken gemacht, wie mein Spiel am schnellsten läuft! Es macht zwar sicherlich bei vielem überhaupt keinen Unterschied, aber hier sind die Fragen:


1.Macht es einen Unterschied, ob man anstatt "Flip" einfach "Goto start" benutzt?Wenn ja, was ist schneller? (sachen wie unübersichtlich nicht eingeschlossen)
2.Dauert es länger einen Code mit vielen Tabs zu compilen, und wird dadurch die .exe auch größer?(kann ich mir nicht vorstellen)
3.Ist der code langsamer, wenn man alles in Funktionen macht, weil man ja aus der Hauptschleife in die Funktion "springt"? (Vieleicht werden beim compilen ja auch alle Funktionen aufgelöst)Razz
4.Ist es bei 3D besser die Bilder mit LoadImage zu laden, oder ein Sprite zu erstellen.
5.Was ist schneller,praktischer bzw. besser:
"Repeat...until" oder "While ...Flip Wend"
(muss ja einen Grund geben, warum man es auf 2 Arten machen kann)


Danke schonmal für alle Antworten! Very Happy
Twitter
Download Jewel Snake!
Windows|Android

the FR3AK

BeitragFr, Feb 16, 2007 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
lol...du meinst bestimmt bei 1. Wend oder? Flip ist was anderes^^

Eingeproggt

BeitragFr, Feb 16, 2007 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
tankbuster hat Folgendes geschrieben:

1.Macht es einen Unterschied, ob man anstatt "Flip" einfach "Goto start" benutzt?


also um flip wirst du nicht herumkommen, weil ja sonst nix gezeichnet wird. Smile

Zu deinen anderen Fragen hab ich keine Antorten, nur allgemein: Ausprobieren!
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Tankbuster

BeitragFr, Feb 16, 2007 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
UPS... da hab ich mich wohl verschrieben... das ich um Flip net herumkomm, weiß ich selber, aber mit "goto" müsste eigentlich alles genau gleich schnell sein wie in der Schleife.
@Eingeproggt
Wie soll ich das denn testen? Question
Twitter
Download Jewel Snake!
Windows|Android

Eingeproggt

BeitragFr, Feb 16, 2007 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So Sachen wie "ist es schneller, alles in eine Function zu schreiben" und "ist es besser ein Image zu laden oder ein sprite zu erstellen" kannst du testen, indem du davor und danach Millisecs() aufrufst. Blöderweise wird es bei so kleinen Veränderungen keinen Unterschied geben.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Tankbuster

BeitragFr, Feb 16, 2007 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich könnte ja 600 images oder so laden,.... dabei könnt ich gleich noch gucken, ob eine For-Next Schleife schneller ist als copy&paste^^


lol,.... man bekommt immer ein anderes ergebniss, je nachdem wie viele Programme man am laufen hat!... und da die CPU auslastung logischerweise immer schwankt, bringt das N I X
Twitter
Download Jewel Snake!
Windows|Android

StepTiger

Betreff: Re: Hohe Geschwindigkeit!

BeitragFr, Feb 16, 2007 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Tankbuster hat Folgendes geschrieben:
1.Macht es einen Unterschied, ob man anstatt "Flip" einfach "Goto start" benutzt?Wenn ja, was ist schneller? (sachen wie unübersichtlich nicht eingeschlossen)

Wie gesagt, das mit Flip... While wend hat eine Menge Vorteile zu labels. Es ist zum Beispiel nicht global.
Tankbuster hat Folgendes geschrieben:
2.Dauert es länger einen Code mit vielen Tabs zu compilen, und wird dadurch die .exe auch größer?(kann ich mir nicht vorstellen)

Nein. Das wird alles durch einen precompiler geschickt, die Tabs machen also keinen Unterschied.
Tankbuster hat Folgendes geschrieben:
3.Ist der code langsamer, wenn man alles in Funktionen macht, weil man ja aus der Hauptschleife in die Funktion "springt"? (Vieleicht werden beim compilen ja auch alle Funktionen aufgelöst)Razz

Ein bisschen, ja. Ist aber sinnlos, es nicht zu tun, da es minimale Unterschiede macht.
Tankbuster hat Folgendes geschrieben:
4.Ist es bei 3D besser die Bilder mit LoadImage zu laden, oder ein Sprite zu erstellen.

Sprite läd eine Textur, kein Bild. Somit komplett unterschiedliche Sachen.
Tankbuster hat Folgendes geschrieben:
5.Was ist schneller,praktischer bzw. besser:
"Repeat...until" oder "While ...Flip Wend"
(muss ja einen Grund geben, warum man es auf 2 Arten machen kann)

Man kann es auf 2 Arten machen, damit irgendwer fragt.
Nun, die Frage habe ich mir auch mal gestellt und habe einen Code zum Testen geschrieben. Es ist ziemlich gleichschnell, wobei ich feststellen musste, dass while im Durchschnitt bessere Werte (0,02%) hatte, was bei etwa 50 Versuchen aber nicht repräsentativ ist.

Berichtigt mich, wenn ich falsch liege.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 16, 2007 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Also:

Zu 1) War ja ein Irtum, aber du kannst in 3D komplett, und in 2D unter bestimmten Vorraussetzungen, auf Cls verzichten. Das bringt schonmal richtig was.

Zu 2) Es ist völlig egal, da, bevor man etwas auf dem Bildschirm sieht, wird compiliert. Dabei gibt es ein Precompiler und ein 'normalen' Copiler. Der erste ist dazu da um zB Konstanten entsprechend aufzulösen, den Code zurecht zu formatieren und für andere Dinge. Daher ergibt es am Ende immer die gleiche .exe

Zu 3) Funktionen sind in der Tat etwas langsamer als wenn man alles in eine Hauptschleife packen würde. Denoch gibt es keinen Grund, generell auf Funktionen zu verzichten. Denn der Geschwindigkeitsverlust ist recht gering und wird noch wesentlich geringer, wenn man bestimmte Dinge beachtet. zB keine Minifunktionen machen wie... Code: [AUSKLAPPEN]
Function(winkel)
 Return sin(winkel+180)*10
End Function
Wenn sowas 100 mal pro Schleifendurchlauf aufgerufen wird, macht sich der Speedverlust durch Funktionen auch bemerkbar.

Zu 4) Sprites sind in vielerlei Hinsicht besser als Images. Zum einen sind sie schneller und können weitere Eigenschaften haben wie zB Transparenz. Allerdings ist das handeln mit Sprites doch etwas umständlicher als mit Images. Noch sehr viel schneller als Sprites ist eine Singlesurface für solche Sachen. Als Beispiel und als Vergleich 2D zu 3D: https://www.blitzforum.de/foru...hp?t=21659

Zu 5) Kein Speedunterschied aber Unterschied bei der Ausführung. Repeat/Until führt immer mindestens einmal die Schleife aus, bis Bedingung zum Ausstieg erfüllt ist. While/Wend kann bereits vor dem ersten Durchlauf überspringen, so das der Inhalt komplett übersprungen wird.

Tankbuster

BeitragFr, März 16, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
OK! noch ein paar mehr Fragen (genau so sinnlos wie die anderen)^^:
1. Führen lange Variablen-Namen zu sppedverlust, oder werden die durch den Pre-Compiler alle in V1,V2 usw umbenannt?
2. Ist es besser anstatt LOL=True/False LOL=1/0 einzusetzen?
Das wars auch schon für jetzt =)
Twitter
Download Jewel Snake!
Windows|Android

skey-z

BeitragFr, März 16, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
das sind auch wieder sachen die du schneller beanwortet hast, wenn du es selber ausprobierst, als hier auf eine Antwort zu warten.

Wenn es Unterschiede gibt, dann nur minimale, zur Speedoptimierung sind da schon andere Sachen interessanter.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Tankbuster

BeitragFr, März 16, 2007 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked Das ist halt nur ne Frage....... Interessiert mich halt! und ausprobieren kann man's schlecht, weil jeder kleinste Prozess die Zeit verändert!
Twitter
Download Jewel Snake!
Windows|Android

Thorsten

BeitragFr, März 16, 2007 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau hier mal zur Speedoptimierung nach :
http://www.blitzbase.de/tutorials/shadow_4.htm

mfG

Thorsten

skey-z

BeitragFr, März 16, 2007 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@Sry, dachte ich hätte es noch nicht abgeschickt@
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

FireballFlame

BeitragSo, März 18, 2007 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Tankbuster hat Folgendes geschrieben:
OK! noch ein paar mehr Fragen (genau so sinnlos wie die anderen)^^:
1. Führen lange Variablen-Namen zu sppedverlust, oder werden die durch den Pre-Compiler alle in V1,V2 usw umbenannt?
2. Ist es besser anstatt LOL=True/False LOL=1/0 einzusetzen?
Das wars auch schon für jetzt =)


zu 1.: Über Variablennamen weiß ich nichts, aber ich denke, der Unterschied, wenn es ihn überhaupt gibt, dürfte minimal sein.
zu 2.: Ich schreib immer 0 und 1, weils kürzer und für mich übersichtlicher ist. Ist aber eine Geschmacksfrage, also kann man schwer sagen, was "besser" ist. Vom Tempo her ist es egal, weil Konstanten beim kompilieren eh durch die entsprechenden Zahlen ersetzt werden.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

StepTiger

BeitragSo, März 18, 2007 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
variablen sind nur pointer auf speicherbereiche.
jeder variable wird also unabhängig von der länge des namens die gleiche zeit benötigen

LOL=True wird vom Precompiler wahrscheinlich eh in LOL=1 umgewandelt.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Silver_Knee

BeitragSo, März 18, 2007 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
True False und Pi sind Konstanten die wie allles was du mit Const definierstvom Precompiler im quellcode durch ihre werte ersetzt werden

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group