Geschwindigkeit von Blitz2d und Max-Demo
Übersicht

NuberBetreff: Geschwindigkeit von Blitz2d und Max-Demo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe vor zwei Wochen mit Blitz 2D angefangen (Demo). Zunächst war ich ja überrascht, wie schnell das alles geht. Wenn man das letzte mal 6510 Basic programmiert hat ![]() Nach einer "Portierung" auf Max ist die Geschwindigkeit jetzt ziemlich mies. Jetzt würde mich interessieren, liegt es an der Demo, der Portierung oder am Klimawandel? Für sinnvolle, brauchbare, hilfreiche Antworten bin ich dankbar! edit: Komma |
||
- Zuletzt bearbeitet von Nuber am Di, Sep 02, 2008 23:04, insgesamt einmal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BlitzMax macht alles in 3D
wenn du ne miese 3D karte hast, wie nen Intel CPU to VGA / DVI Adapter (kurz jede Intel Onboard), dann ist das was du erwarten kannst. Ebenfalls kannst du sehr viel kaputt machen wenn du hunderte bilder zeichnest obwohl sie net nötig wären ODER du nicht BM programmierst sondern BlitzPlus/2D/3D Code importierst. Das wird niemals etwas gescheites werden. Das kannst du übrigens einfach rausfinden: Erste linie im programm muss Strict oder SuperStrict sein, dann läufst du im BlitzMax Modus, hast die Optimierungen und alles geht wie es soll und es zwingt dich im BM Stil zu programmieren (keine INT handles für types etc, denn damit verlierst du bis zu 70% leistung und solche dinge halt) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
NuberBetreff: Danke |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich benutze eigentlich schon von Haus relativ "sauberen" Code, da ich schon mal in c++ und in Java neigeschaut habe. Die normalerweise ziemlich strengen Deklarationen sehe ich als wesentlichen Vorteil
dieser Sprachen. Allerdings hat das Max durch die Möglichkeit komplexe Objekte zu übergeben deutlich gewonnen. Eigentlich kann man da zufrieden seine Bahnen ziehen... |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das heisst du hast:
:TImage für die Bilder :int, :float, :string drin und so? Und natürlich Strict / SuperStrict (denn ohne werden viele optimierungen ausgeschalten) Auch solltest du primär local verwenden, nur global wenn es zwingend notwendig ist. Global ist einiges weniger effizient weil es anders gehandhabt werden muss im speicher. wenn das alles schon so ist, dann ist es primär deine Grafikkarte die mit 3D nicht zu rande kommt (BM hat kein 2D, nur 2D durch 3D, wie Draw3D, SpriteCandy in Blitz3D zb) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
NuberBetreff: hmmmm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich definiere die Variablen wenn es geht am Anfang. Sonst geht bei mir recht schnell
der Überblick verloren. Ausserdem benutze ich Typen und Funktionen, die sowieso auf deklarierte Prms bestehen. Was macht denn Timage genau? Bei den Bilder gibt es ja doch noch grössere Unterschiede. Trotz grösserer Anstrengungen konnte ich den Hintergrund noch nicht transparent machen. Vielen Dank für die Antworten. Bin erstmal aff. [/quote] |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
:TImage definiert dass es sich beim objekt um ein Bild handelt.
du kannst nicht loadimage nehmen und es einem integer zuweisen, das geht nur wenn man BM im steinzeitmodus laufen lässt. Dort verliert man wie gesagt 50-80% der leistung, denn BM ist nicht auf int geholze ausgelegt sondern auf richtige objekte Wie gesagt: Pack Strict oder SuperStrict in die erste zeile Dann wird dir der Compiler schon sagen wo du überall nicht BM konform programmierst. Alles am anfang zu definieren ist ne schlechte idee. BM unterstützt, anders als die alten blitz, richtiges local. Das heisst: local in einer funktion, in einem if oder in einer schleife: existiert nicht ausserhalb, objekte werden automatisch eingesammelt wenn sie sonst nirgends verwendet werden (zb als rückgabe aus der funktion) wenn du alles global machst (du kannst nur global oder local in Strict, SuperStrict, sonst ist es garnicht definiert und der kompiler akzeptiert es nicht), bremst du den garbage collector eigentlich aus und auch die daten enden nicht da im CPU cache wo sie am schnellsten wären. Solange du kein Strict oder SuperStrict hast, hast du keinen BM code, sondern fast garantiert grottig langsamen Blitz2D code. EMPFEHLUNG: Im festgemachten Threads für BM Neulinge Assaris Tutorial Page und dort die 2D Tutorials durcharbeiten. Sollte eigentlich 99.5% deiner probleme lösen vor allem auch das kollisionstutorial damit du gegebenenfalls auf das neue, viel effizientere kollisionshandling wechseln kannst |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group