Das sieht doch mal wieder danach aus, als ob jemand Zeit-Tests mit Debugger macht
Debugger bei sowas immer ausmachen !
Hier mal mein Test-Code:
Code: Alles auswählen
Enumeration
#Image1
#Image2
#Image3
#Window
#Gadget
EndEnumeration
Procedure ImageGrayCallback(x, y, TopColor, BottomColor)
Gray = Red(TopColor)*0.56+Green(TopColor)*0.33+Blue(TopColor)*0.11
ProcedureReturn Gray<<16+Gray<<8+Gray
EndProcedure
Procedure ImageGray(Image)
StartDrawing(ImageOutput(Image))
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@ImageGrayCallback())
DrawImage(ImageID(Image), 0, 0)
StopDrawing()
EndProcedure
Procedure GrayImage(Image)
If StartDrawing(ImageOutput(Image))
For y1 = 0 To ImageHeight(Image)-1
For x1 = 0 To ImageWidth(Image)-1
Farbwert.l = Point(x1, y1)
NeuerFarbwert = Round(Red(Farbwert) * 0.56 + Green(Farbwert) * 0.33 + Blue(Farbwert) * 0.11, 0)
Plot(x1, y1, RGB(NeuerFarbwert, NeuerFarbwert, NeuerFarbwert))
Next x1
Next y1
StopDrawing()
EndIf
EndProcedure
Procedure GrayScale(ImageNumber.l)
; Wandelt das übergebene Image (die ImageNummer von zB LoadImage()) in Graustufen
Protected BufferSize.l
Protected Buffer.l
Protected x.l
Protected Hell.l
BufferSize.l = ImageWidth(ImageNumber.l) * ImageHeight(ImageNumber.l) * 4 - 1 ; Puffergrösse berechnen
Buffer.l = AllocateMemory(BufferSize.l); speicher reservieren
GetBitmapBits_(ImageID(ImageNumber.l), BufferSize.l, Buffer.l); Bilddaten in Speicher kopieren
For x.l = 0 To BufferSize.l Step 3
R.l = PeekB(Buffer.l + x.l + 2) & $FF
G.l = PeekB(Buffer.l + x.l + 1) & $FF
B.l = PeekB(Buffer.l + x.l) & $FF
Hell.l = (0.3 * R.l + 0.59 * G.l + 0.11 * B.l) ; 0 bis 255
PokeB(Buffer.l + x.l, Hell.l)
PokeB(Buffer.l + x.l + 1, Hell.l)
PokeB(Buffer.l + x.l + 2, Hell.l)
Next
SetBitmapBits_(ImageID(ImageNumber.l), BufferSize.l, Buffer.l)
FreeMemory(Buffer.l)
EndProcedure
UseJPEGImageDecoder()
UsePNGImageDecoder()
LoadImage(#Image1, "D:\1.jpg")
CopyImage(#Image1, #Image2)
CopyImage(#Image1, #Image3)
Time = ElapsedMilliseconds()
GrayImage(#Image1)
Time1 = ElapsedMilliseconds()-Time
Time = ElapsedMilliseconds()
ImageGray(#Image2)
Time2 = ElapsedMilliseconds()-Time
Time = ElapsedMilliseconds()
GrayScale(#Image3)
Time3 = ElapsedMilliseconds()-Time
MessageRequester("Testergebnis", "The_Dark_Zim-.-: "+Str(Time1)+Chr(10)+"STARGÅTE: "+Str(Time2)+Chr(10)+"Volker Schmid: "+Str(Time3))
Ohne Debugger:
---------------------------
Testergebnis
---------------------------
The_Dark_Zim-.-: 391
STARGÅTE: 94
Volker Schmid: 125
---------------------------
OK
---------------------------
Im übrigen geht deiner garnicht ^^, erst wenn man ImageHeight(Image)-1 usw. macht, sonst gibs n IMA ^^
(So geschaft meiner ist der schnellste ^^)
ne aber wirklich, bitte nie mit Debugger Zeit-Tests machen,
weil ja bei vielen Sachen der Debugger mehr "kontrolliert" und deswgeen langsammer macht!
EDIT: Jo TS-Soft, wie denken wieder auf der selben Ebene zur selben Zeit ^^ Womit die UnschärfeRelation von Heisenberg widerlegt wurde
(ja ich weiß da gilt es für Impuls-Ort bzw. Zeit-Energie)