RGB tout simple

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

RGB tout simple

Message par graph100 »

Code : Tout sélectionner

Structure RGB
	r.a
	g.a
	b.a
EndStructure

Structure Couleur
	StructureUnion
		color.l
		RGB.RGB
	EndStructureUnion
EndStructure

MaCouleur.Couleur\color = RGB(6, 94, 106)

Debug MaCouleur\RGB\r
Debug MaCouleur\RGB\g
Debug MaCouleur\RGB\b
chez moi c'est plus rapide que d'autre méthode. (en relativisant puisque le code de test fait 1Million de fois la boucle :mrgreen: )
et chez vous ??

j'utilise le code suivant pour tester la vitesse :

Code : Tout sélectionner

Debug Hex(RGB(255, 0, 0))
Debug Hex(RGB(0, 255, 0))
Debug Hex(RGB(0, 0, 255))

var = 0

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = Red(#Magenta)
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = Green(#Magenta)
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = Blue(#Magenta)
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

Debug "#############"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = #Magenta & $0000FF
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = (#Magenta & $00FF00) >> 8
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = (#Magenta & $FF0000) >> 16
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"




Debug "#############"

Structure RGB
	r.a
	g.a
	b.a
EndStructure

Structure Couleur
	StructureUnion
		color.l
		RGB.RGB
	EndStructureUnion
EndStructure


var2.Couleur\color = #Magenta

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = var2\RGB\r
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = var2\RGB\g
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"

time = 0
For b = 0 To 50
	t = ElapsedMilliseconds()
	For a = 0 To 1000000
		var = var2\RGB\b
	Next
	time = time + ElapsedMilliseconds() - t
; 	Debug b
Next
Debug "t = " + Str(time / 51) + "ms"
résultat :
Debugger a écrit :FF
FF00
FF0000
t = 134ms
t = 126ms
t = 126ms
#############
t = 129ms
t = 129ms
t = 130ms
#############
t = 125ms
t = 125ms
t = 124ms
Dernière modification par graph100 le ven. 17/juin/2011 15:57, modifié 1 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: RGB tout simple

Message par djes »

Tu ne peux pas être sûr de l'ordre des composantes; certaines cartes utilisent du BGR :/
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: RGB tout simple

Message par graph100 »

Dans ce cas tu fait une correction après, mais ça doit quand même rester rapide.

[correction]
plus haut j'ai utilisé des type b : -128 à +127
corrigé en : type a : 0 à +255

:lol: :lol:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: RGB tout simple

Message par djes »

Pas si sûr que toi... Et il ne faut pas faire de test de vitesse en mode de débogage.
Répondre