Geschwindigkeit von WritePixelFast
Übersicht

![]() |
Plasma(alt)Betreff: Geschwindigkeit von WritePixelFast |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 1024,768,32,2 O_image = CreateImage (1024,1024) Delay 1000 m = MilliSecs() SetBuffer ImageBuffer(o_image) LockBuffer For r = 1 To 1024 For i = 1 To 1024 WritePixelFast r,i,0 Next Next UnlockBuffer Print MilliSecs()-m +" ms for write" Delay 1000 m = MilliSecs() SetBuffer ImageBuffer(o_image) LockBuffer For r = 1 To 1024 For i = 1 To 1024 a =ReadPixelFast (r,i) Next Next UnlockBuffer Print MilliSecs()-m +" ms for read" Waitkey() 76 ms write 813 ms read |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja und? nix wirklich neues ^^
... oder habe ich deinen ausführlichen kommentar falsch verstanden? ![]() ![]() ich lasse dir etwas zeit, zu antworten, was die aussage sein sollte, dann schiebe ich es nach allgemein, für denn fall, dass ich dich missverstanden habe. |
||
MrKeks.net |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was zur Hölle sollen solche Schwachsinns Thread ohne jede Daseinberechtigung und ohne jeden Versuch ihnen eine zu geben?
walski |
||
buh! |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Es steht nicht EIN Satz dabei was es soll!
Also ein: "Warum ist ReadPixelFast so lahm?" oder "Ist das normal das ReadPixelFast so lahm ist?"... NADA 2. Solche erkenntnisse haben sicherlich nichts im Smalltalk zu suchen (da stands eben noch!) 3. "So siehts aus" als Topic setzt dem ganzen noch die Krone auf! (auch geändert!) Also wenn Plasma uns jetzt noch sagt was er will is doch alles gut. Aber ich setze auch nicht: walski hat Folgendes geschrieben: Forum: Zum Forum Topic: "Nüdeldüü BÜÜÜ!" Code: [AUSKLAPPEN] t=millisecs() for i=1 to 100 print "Hallo" next t=millisecs()-t print t 3ms Ins Forum! Das hätte genausoviel Sinn! walski |
||
buh! |
![]() |
Plasma(alt)Betreff: ok |
![]() Antworten mit Zitat ![]() |
---|---|---|
also
ich persöhnlich hätte nie im traum daran gedacht das es diesen unterschied gibt da ich dachte beide nativen b3d befehle sind gleichschnell! Ausserdem erklärt dieser Thread einige probleme in bezug auf Speicherzugriffe in Assembler oder C++ Warum Images und Texturen nicht wie in b+ im sys ram gehalten werden können weiss ich nicht aber viele 3d engines (b3d ist keine engine ich weiss) machen es so um schnellere manipulationen zu ermöglichen ich glaube die alte überschrift gab meiner "En(d)-täuschung mehr Ausdruck ! ps: in diesem forum habe ich schon wesentlich schwachsinnigeren schwachsinn gelesen ![]() Ich schäme mich ja fast dafür das ich hier poste ! by |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab bisher immer nur Probleme mit WritePixelFast gehabt. Wenn ich z.B. eine Bitmap-Datei auslese (Byte für Byte) und dann mit WritePixelFast darstellen will, muss ich vorher die ganzen Farbwerte noch in dieses andere (blöde) Farbsystem umrechnen. Da bin ich dann mit Plot insgesammt etwa genauso schnell.
Eigentlich ein toller Befehl, weil er wirklich schneller ist als Plot, aber mit diesen Farbsystem ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm... Ich habe noch nie mit WritePixelFast gearbeitet, aber da ich jetzt weiß wie lahm es ist, arbeite ich jetzt bit GLBasic ![]() @ST: Das ist genau das, was ich immer sage ![]() |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
das kann ich nicht erkläeren - sowas passiert nur wenn man gleichz. schreibt/liest... muss später ansehen... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
morszeckGastBetreff: Re: ok |
![]() Antworten mit Zitat |
|
---|---|---|
Plasma hat Folgendes geschrieben: also
ich persöhnlich hätte nie im traum daran gedacht das es diesen unterschied gibt da ich dachte beide nativen b3d befehle sind gleichschnell! Da musst du dich an Mark wenden, dem Programmierer von B... Zitat: Ausserdem erklärt dieser Thread einige probleme in bezug auf
Speicherzugriffe in Assembler oder C++ Warum Images und Texturen nicht wie in b+ im sys ram gehalten werden können weiss ich nicht aber viele 3d engines (b3d ist keine engine ich weiss) machen es so um schnellere manipulationen zu ermöglichen Da liegst du falsch: http://www.blitzbase.de/befehle2d/loadimage.htm Es gibt eben verschiedene Lademodis, bzw kannst du dir aussuchen in welchem Ram das Image geladen werden soll. Zitat: Ich schäme mich ja fast dafür das ich hier poste !
Naja, musst du nicht. Nur nächtemal solltest du aussagekräftige mehrsätzige Postings abgeben... Aber noch eine Frage, wie schnell ist das ganze in C++ und mit welcher Engine hast du es verglichen ? |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Hast du Fehler im Code (1-1024) - ist aber nicht schlimm
2. Die Grafikkarte wurde auf Schreibzugriffe optimiert - da Programme meistens nur dumm den Bildschirm vollpixeln 3. Du schreibst immer den selben Wert - Grafikkarten benutzen spezielle Techniken um gleichfarbige Flächen schneller zu füllen - wenn ich Rand mache, dann verdoppelt sich die Zeit 4. DU MUSST!!!! Zuerst X-Koordinaten und dann Y-Koordinaten abarbeiten - Da Grafikkarte einen Cache hat, der davon ausgeht, dass der nächtste Pixel in X-Richtung ausgelesen wird... ich habe jetzt das Verhältniss 1:2, wärend du 1:10 hattest... Code: [AUSKLAPPEN] Graphics3D 1024,768,32,2 O_image = CreateImage(1024,1024) Delay 1000 t1=MilliSecs() buffer=ImageBuffer(o_image) LockBuffer buffer For y = 0 To 1023 For x = 0 To 1023 WritePixelFast x,y,Rand(255),buffer Next Next t2=MilliSecs() UnlockBuffer buffer Print t2-t1 +" ms for write" Delay 1000 t1=MilliSecs() buffer=ImageBuffer(o_image) LockBuffer buffer For y = 0 To 1023 For x = 0 To 1023 a=ReadPixelFast(x,y,buffer) Next Next UnlockBuffer buffer t2=MilliSecs() Print t2-t1 +" ms for read" WaitKey() read: 260 write: 480 |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Plasma(alt)Betreff: Rand() |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 1024,768,32,2 O_image = CreateImage(1024,1024) Delay 1000 t1=MilliSecs() buffer=ImageBuffer(o_image) LockBuffer buffer For y = 0 To 1023 For x = 0 To 1023 WritePixelFast x,y,x Mod 255,buffer Next Next t2=MilliSecs() UnlockBuffer buffer Print t2-t1 +" ms for write" Delay 1000 t1=MilliSecs() buffer=ImageBuffer(o_image) LockBuffer buffer For y = 0 To 1023 For x = 0 To 1023 a=ReadPixelFast(x,y,buffer) Next Next UnlockBuffer buffer t2=MilliSecs() Print t2-t1 +" ms for read" WaitKey() rand () ist langsam Aber immer noch einen unterschied von 1:7 hier! ja klar der video ram ist auf schreiben getrimmt der zugriff ist stark vom treiber bzw der videocard abhängig über rtlmovememory wirds noch fantastischer Code: [AUSKLAPPEN] m = MilliSecs() RtlMoveMemory2 i_bank,obuffer,1024*1024*4 Print MilliSecs()-m +" read" m = MilliSecs() RtlMoveMemory2 o_bank,cbuffer,1024*1024*4 Print MilliSecs()-m +" read" ;CallDLL ("TERABIT","PIXTEST",i_bank,o_bank) m = MilliSecs() RtlMoveMemory tbuffer,I_bank,1024*1024*4 ;DrawImage T_image,0,0 Print MilliSecs()-m +" write" ;Text 10,10 ," DLL needs " +Str( d) +" ms " WaitKey() End 780 lesen 24 schreiben @TS >4. DU MUSST!!!! Zuerst X-Koordinaten und dann Y-Koordinaten abarbeiten - Da Grafikkarte einen Cache hat, der davon ausgeht, dass der nächtste Pixel in X-Richtung ausgelesen wird... ich habe jetzt das Verhältniss 1:2, wärend du 1:10 hattest... das stimmt 100% und bringt noch ein paar ms @morszeck die zusatzmodi zum laden hat b3d nicht, sondern nur b+ |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh rand ist tatsächlich langsam - sollte man nicht in so eine schleife packen...
naja immerhin 1:4 bei mir *g* buffer=ImageBuffer(o_image) LockBuffer buffer For y = 0 To 1023 For x = 0 To 1023 xx=(xx+1) Mod 256 WritePixelFast x,y,xx,buffer Next Next t2=MilliSecs() UnlockBuffer buffer Print t2-t1 +" ms for write" K.A. meine DLL braucht für 256x256 nur 1-2 ms. zum lesen... Aber wenn ich gleichzeitig was schreiben will, dann bricht alles zusammen... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
Plasma(alt)Betreff: read bytes |
![]() Antworten mit Zitat ![]() |
---|---|---|
grins nicht so @TS | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Jetzt muss man sogar beachten wie man x und y abarbeitet? Oo"
Jo gehört zum Grundwissen - X immer zuerst, dann Y |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group