BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
6 oct. 2006 à 15:57
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
30 août 2008 à 16:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_jeron
Messages postés29Date d'inscriptionlundi 30 juin 2003StatutMembreDernière intervention25 juillet 20142 30 août 2008 à 14:42
super mais ou est l'exécutable ?
tkfe
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutModérateurDernière intervention19 décembre 2007 24 oct. 2006 à 14:03
Rapide et simple, oui, si on reste au format 32 bits. Par contre, si on veut sauvegarder l'image avec la taille la plus réduite possible, le format 8 bits indexé est sans aucun doute plus approprié...
Brunews apporte sans contestation une augmentation de la performance. Même si ce ne sont que quelques millisecondes sur une image de faible taille, cela pourait représenter quelques dixièmes de secondes sur une image plus importante.
Pym Corp
Messages postés166Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention18 novembre 2007 24 oct. 2006 à 11:53
Passer par les colormatrix serait beaucoup plus rapide (et simple) non ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 oct. 2006 à 17:33
On pourrait encore gagner 256 comparaisons 'y <= 255 ?' en bas de boucle.
Il faut pour cela changer FOR par un DO LOOP afin de tendre vers 0, le compilo devrait donner un code nettement plus valable.
Pourquoi (le NEXT vb):
For y = 0 To 255
'bla bla bla
Next
vaut compilé:
xor ebx, ebx
FORy:
; bla bla bla
inc ebx
cmp ebx, 255
jbe FORy ; LE BOUCLAGE NEXT VB
Si on tendait vers 0:
yZERO:
; bla bla bla
dec ebx
jns yZERO
Le benef est tout net d'une comparaison par tour.
Pour cela placer au début B, V et R aux valeurs maxi, les décrémenter à chaque tour (76, 151 et 28).
Now je passe en syntaxe C, souvenirs VB trop lointains, tu traduiras:
y = 255;
do {
tabBleu[y] = B;
tabVert[y] = V;
tabRouge[y] = R;
B -= 76;
V -= 151;
R -= 28;
} while(--y >= 0);
tkfe
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutModérateurDernière intervention19 décembre 2007 6 oct. 2006 à 16:51
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 oct. 2006 à 15:57
Salut,
Recherche de performance, virer aussi les multiplications inutiles, on va en gagner 3*255.
Dim tabBleu(256) As Integer
Dim tabVert(256) As Integer
Dim tabRouge(256) As Integer
Dim B As Integer, V As Integer, R As Integer
B = 0
V = 0
R = 0
For y = 0 To 255
tabBleu(y) = B
tabVert(y) = V
tabRouge(y) = R
B = B + 76
V = V + 151
R = R + 28
Next
gaffe que je ne suis pas VBiste alors vérifier ma syntaxe.
ciao...
30 août 2008 à 16:38
pas de zip, il te faut juste copier le code dans l'IDE VB.NET puis compiler toi-même le projet
PAS d'EXE : http://www.vbfrance.com/doc/faq.aspx#cs_noexe
Où TROUVER VS/VB : http://www.vbfrance.com/doc/faq.aspx#vb_lastide
QUE CONTIENT UN ZIP : http://www.vbfrance.com/doc/faq.aspx#vb_src
30 août 2008 à 14:42
24 oct. 2006 à 14:03
Brunews apporte sans contestation une augmentation de la performance. Même si ce ne sont que quelques millisecondes sur une image de faible taille, cela pourait représenter quelques dixièmes de secondes sur une image plus importante.
24 oct. 2006 à 11:53
6 oct. 2006 à 17:33
Il faut pour cela changer FOR par un DO LOOP afin de tendre vers 0, le compilo devrait donner un code nettement plus valable.
Pourquoi (le NEXT vb):
For y = 0 To 255
'bla bla bla
Next
vaut compilé:
xor ebx, ebx
FORy:
; bla bla bla
inc ebx
cmp ebx, 255
jbe FORy ; LE BOUCLAGE NEXT VB
Si on tendait vers 0:
yZERO:
; bla bla bla
dec ebx
jns yZERO
Le benef est tout net d'une comparaison par tour.
Pour cela placer au début B, V et R aux valeurs maxi, les décrémenter à chaque tour (76, 151 et 28).
Now je passe en syntaxe C, souvenirs VB trop lointains, tu traduiras:
y = 255;
do {
tabBleu[y] = B;
tabVert[y] = V;
tabRouge[y] = R;
B -= 76;
V -= 151;
R -= 28;
} while(--y >= 0);
6 oct. 2006 à 16:51
6 oct. 2006 à 16:39
http://www.codyx.org/snippet_image-niveaux-gris_75.aspx
6 oct. 2006 à 15:57
Recherche de performance, virer aussi les multiplications inutiles, on va en gagner 3*255.
Dim tabBleu(256) As Integer
Dim tabVert(256) As Integer
Dim tabRouge(256) As Integer
Dim B As Integer, V As Integer, R As Integer
B = 0
V = 0
R = 0
For y = 0 To 255
tabBleu(y) = B
tabVert(y) = V
tabRouge(y) = R
B = B + 76
V = V + 151
R = R + 28
Next
gaffe que je ne suis pas VBiste alors vérifier ma syntaxe.
ciao...