Text in Blitz+ 10x langsamer als B3D

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

ozzi789

Betreff: Text in Blitz+ 10x langsamer als B3D

BeitragDi, Jan 10, 2012 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Morgen Community,

Ich habe gerade etwas interessantes entdeckt, was zumindest für mich neu ist...

Folgender Code:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2

SetBuffer BackBuffer()

a#=MilliSecs()

For x=1 To 40
For y=1 To 30
Text x*20,y*20,"A"
Next
Next

e#=MilliSecs()



Flip

RuntimeError e#-a#


Hat auf meinem PC, ohne Debugger genau 451 ms. Fast eine halbe Sekunde!
Während wenn ich den selben Code mit B3D ausführe gerade mal 41 ms brauche.


Wieso ist Text 10x schneller in B3D ?
Gibt es eine Alternative für B+?


Danke für eure Hilfe!
Es grüsst,
ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Midimaster

BeitragDi, Jan 10, 2012 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
beide Ergebnisse klingen unwahrscheinlich. Selbst bei meinem Uralt-Notebook braucht das Programm nur 13msec in B3D. Allerdings unter BMax 22msec!
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

ozzi789

BeitragDi, Jan 10, 2012 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

user posted image
(Bei B3D schwanken die Ergebnisse zwischen 14 - 30 ms.)

Trotzdem ein grosser Unterschied nicht?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

BladeRunner

Moderator

BeitragDi, Jan 10, 2012 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Um den Test fairer zu machen, gib der App Glegenheit sich vollständig zu initialisieren, sprich: Lass erstmal nen Text ausgeben und dann erst starte die Messung. Es kann sein dass die ersten Vorbereitungen einfach mehr Zeit verschlingen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ozzi789

BeitragDi, Jan 10, 2012 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Gute Idee eigentlich, aber selbiges Ergebniss..
Habe folgenden Code verwendet:
Code: [AUSKLAPPEN]
Graphics 800,600,32,2

SetBuffer BackBuffer()

Text 0,0,"Initialisiere..."
Flip
Delay (100)
Cls

While x>100
   x=x+1
Wend

a#=MilliSecs()

For x=1 To 40
   For y=1 To 30
      Text x*20,y*20,"A"
   Next
Next

e#=MilliSecs()



Flip

RuntimeError  e#-a#




Hier für alle mal den oben aufgeführten Code compiliert , ohne Debugger 1x B+ & 1x B3D.
http://www.file-upload.net/dow...t.zip.html

Wäre froh wenn jemand die Ergebnisse beider Echsen posten könnte
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Jan_

Ehemaliger Admin

BeitragDi, Jan 10, 2012 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
900 zu 40

was soweit auch klar ist.

Die emulation von DirectX 5.1, welches für B+ größtenteils verwendet wird, ist sehr langsam. mit B+ kann man unter Windows NT 4.0 Programmieren.

unter Windows 7ben ist das natürlich nur noch emuliert und dadurch extrem langsam. Setzte einfach mal den OpenGL treiber ein und schaue, ob es dann schneller ist.
between angels and insects

ozzi789

BeitragDi, Jan 10, 2012 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittels SetGfxDriver 2
13.0 Millisekunden Shocked
Jedoch crasht die Exe nach dem Beenden der Exe wenn ich den OGL Modus einschalte.
(Hahah ich wusste nicht das B+ DirectX 5.1 verwendet, wow!)


Das Interessante ist jedoch, das die Performanceeinbussen nur mit Text auftauchen, soweit ich das getestet habe!


Kann mir jemand erklären was der Unterschied zwischen Native und DirectDraw sein soll?



Ich bin verwirrt Confused
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
  • Zuletzt bearbeitet von ozzi789 am Di, Jan 10, 2012 12:21, insgesamt einmal bearbeitet

ozzi789

BeitragDi, Jan 10, 2012 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok,

native:21
ogl: 13
directdraw: 5106 (merkwürdig, plötzlich geht da nichts mehr, mein armes Windows Surprised )
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Jan_

Ehemaliger Admin

BeitragDi, Jan 10, 2012 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
schuldigung, DX5 ist sogar falsch gewesen, Direct draw, wars und das ist seit DX 3.X unverändert. und voll Out of State.
Ich glaube, das geschw. Problem ist das er versucht die schriften zu weichen oder probleme mit den Fonts hat, Native macht einfach selber die Zeichenoperationen auf das Canvas.
between angels and insects

ozzi789

BeitragDi, Jan 10, 2012 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Aufklärung, Native, so soll es sein Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ZEVS

BeitragDi, Jan 10, 2012 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
@Topic:
https://www.blitzforum.de/foru...hp?t=37568. Das Text-Komando hat unter B+ Anti-Alias und ist 3-6mal so langsam wie DrawImage (einfach den Text vorrendern).

Zitat:
Jedoch crasht die Exe nach dem Beenden der Exe wenn ich den OGL Modus einschalte.

Ist mir auch mal passiert.
hazumu-kun hat Folgendes geschrieben:
Beim OpenGL Treiber musst du das Programm eventuell über die API Funktion exitprocess beenden damit die Fehlermeldung nicht kommt.

Decls:
Code: [AUSKLAPPEN]

.lib "kernel32.dll"
api_ExitProcess (uExitCode%) : "ExitProcess"


Im Code dann mit "api_ExitProcess" aufrufen.

(Link)

ZEVS

ozzi789

BeitragDi, Jan 10, 2012 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ZEVS

Text vorrendern werde ich für konstante Strings einbauen!


Danke für den Tipp mit ExitProcess (der war mir auch schon mal nützlich Wink https://www.blitzforum.de/foru...ong+thread) , funktioniert perfekt, somit kann man OGL ohne Crash verwenden.

Danke viel mals!
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hazumu-kun

BeitragMi, Jan 11, 2012 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fühl mich geehrt hier aus anderen Threads zitiert zu werden! Very Happy

Aber komischerweise muss man das Programm mit OpenGL per ExitProcess beenden. Ich weiß nicht inwiefern Blitz nach einem END oder dem Codeende noch Aufräumarbeiten durchführt, aber anscheinend ist ein ExitProcess sauberer als das was Blitz mit einem OpenGL Kontext anstellt/anzustellen versucht.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group