DrawImage

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

DrawImage

Beitrag von Josh »

Hallo,

wenn ich ein Image auf ein gleich großes Zielimage zeichne, benötigt dies doppelt so lange, als wenn das Zielimage größer als das Quellimage ist. Da kann dich was nicht stimmen?

Code: Alles auswählen

CreateImage  (0, 500, 300, 32)
CreateImage  (1, 500, 300, 32)
CreateImage  (2, 501, 301, 32)

StartDrawing (ImageOutput (0))
  Box (0, 0, 500, 300, #Red)
StopDrawing()

time = ElapsedMilliseconds()
StartDrawing (ImageOutput (1))
  For i = 1 To 10000
    DrawImage (ImageID (0), 0, 0, 500, 300)
  Next
StopDrawing()
Debug ElapsedMilliseconds() - time; 4368ms

time = ElapsedMilliseconds()
StartDrawing (ImageOutput (2))
  For i = 1 To 10000
    DrawImage (ImageID (0), 0, 0, 500, 300)
  Next
StopDrawing()
Debug ElapsedMilliseconds() - time ; 2184ms
getestet: Win7 x64, Pb 5.11 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DrawImage

Beitrag von ts-soft »

Hier ist doch kein Image zu gross, lediglich malst Du über die ersten Images hinaus.
Ein Image mit der weite von 500 geht von 0 - 499, wenn Du da auf 500 malst, haste
ein Problem :wink:

Deine Zeitmessung sagt ganz neben bei gesagt, gar nichts aus, da mit Debugger gemessen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: DrawImage

Beitrag von Josh »

Wo? Wie? Was? Ein Image von 500x300 soll größer sein als ein Image von 500x300???? Wo male ich da über das Image hinaus?

Ob mit oder ohne Debugger spielt in diesem Falle kaum eine Rolle. Die Rechenarbeit liegt im DrawImage Befehl, der Rest liegt bei 10k Durchläufen im nicht messbaren Bereich. Die Zahlen sagen genau das aus, was sie sollen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DrawImage

Beitrag von ts-soft »

Hab mich geirrt, bei DrawImage stimmen die Werte.

Die Messung mit Debugger zeigt allerhöchstens einen Trend, der Erfahrungsgemäß auch falsch sein könnte,
ist somit im Allgemeinen unnütze.

Der Unterschied ohne Debugger beträgt bei mir lediglich 4336 : 3776, also bei weitem nicht so dramatisch wie bei Dir.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: DrawImage

Beitrag von Josh »

Habe das Beispiel erweitert und im englischen Bugforum gepostet.

Was noch interessant ist, dass Pb x64 in diesem Beispiel wirklich erheblich schneller ist als x86
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DrawImage

Beitrag von ts-soft »

Leider verwendest Du immer noch den Debugger, der vollkommen unnütze Ergebnisse liefert.
Oftmals lassen sich aus so ermittelten Ergebnissen nicht mal ein Trend ablesen, weil die
Ergebnisse ohne genau das Gegenteil ergeben könnten.

Aber Du willst es anscheinend nicht wahr haben, obwohl das hier bereits tausende mal diskutiert wurde.
Messungen mit angeschaltetem Debugger sind absolut Unnütz, weil das Ergebnis keinerlei Aussagekraft hat.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
alter Mann
Beiträge: 201
Registriert: 29.08.2008 09:13
Wohnort: hinterm Mond

Re: DrawImage

Beitrag von alter Mann »

bei mir 2203:2203

getestet auf Win8 x64 PB 5.11x86
Win11 64Bit / PB 6.0
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: DrawImage

Beitrag von Josh »

ts-soft hat geschrieben:Aber Du willst es anscheinend nicht wahr haben, obwohl das hier bereits tausende mal diskutiert wurde. Messungen mit angeschaltetem Debugger sind absolut Unnütz, weil das Ergebnis keinerlei Aussagekraft hat.
Leider willst du es nicht wahrhaben, dass der Debugger in diesem Beispiel keinerlei Einfluss hat. Abgesehen von den üblichen Messtoleranzen sind die Ergebnisse exakt die selben.

Wie ich bereits oben geschrieben habe, liegt die Rechenarbeit im DrawImage und der Rest liegt bei den 10k Durchläufen im nicht messbaren Bereich. Da muss ich schon auf 100k Durchläufe gegen, dass ich für den Rest zeitweise mal auf 16ms für die gesamten 100k Durchläufe komme. Also vollkommen irrelevant.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DrawImage

Beitrag von ts-soft »

50% Zeitdifferenz kann ich so oder so nicht messen, lediglich < 10% mit x86 und < 5% mit x64.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: DrawImage

Beitrag von NicTheQuick »

Also hier unter Linux x64 kriege ich folgende Ergebnisse:
Debugger Window hat geschrieben:4039
5059
Ohne Debugger kommt das raus:
4100
3998
Antworten