Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
779 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  opérations et complexités

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

opérations et complexités

n°1582902
letesp
Posté le 05-07-2007 à 17:08:50  profilanswer
 

Bonjour,
 
Je me pose des questions sur la façon dont je peux optimiser mes algorithmes de traitement d'images.
 
Je voudrai savoir comment Java gère ce calcul par exemple:
 
a=false;
b=c=d=true;
result = a & b & c & d;
 
Est-ce que le calcul est fini dès que a est évalué, ou est-ce qu'il continu?
 
 
 
Sinon est-ce que la complexité de ceci:
 
int a;
for(int i=0; i<4; i++){
   a=i;
}
 
est plus grande que cela:
 
int a;
a=0;
a=1;
a=2;
a=3;
 
 
Merci

Message cité 3 fois
Message édité par letesp le 05-07-2007 à 17:22:46
mood
Publicité
Posté le 05-07-2007 à 17:08:50  profilanswer
 

n°1582912
jagstang
Pa Capona ಠ_ಠ
Posté le 05-07-2007 à 17:18:00  profilanswer
 

letesp a écrit :

Bonjour,
 
Je me pose des questions sur la façon dont je peux optimiser mes algorithmes de traitement d'images.
 
Je voudrai savoir comment Java gère ce calcul par exemple:

Code :
  1. //3


Est-ce que le calcul est fini dès que a est évalué, ou est-ce qu'il continu?
 
 
 
Sinon est-ce que la complexité de ceci:

Code :
  1. //3


est plus grande que cela:

Code :
  1. //3


Merci


je vois pas de traitement d'images  [:jagstang]  


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1582916
letesp
Posté le 05-07-2007 à 17:24:05  profilanswer
 

J'ai remis le code. Elle marche les balises "code"?
 
Maintenant à chaque fois que je les mets ça remplace le code par "//3".

n°1582947
masklinn
í dag viðrar vel til loftárása
Posté le 05-07-2007 à 17:59:37  profilanswer
 

letesp a écrit :

Bonjour,

 

Je me pose des questions sur la façon dont je peux optimiser mes algorithmes de traitement d'images.

 

Je voudrai savoir comment Java gère ce calcul par exemple:

 

a=false;
b=c=d=true;
result = a & b & c & d;

 

Est-ce que le calcul est fini dès que a est évalué, ou est-ce qu'il continu?


Les opérateurs booléens en java, comme avec environ 90% des langages de prog modernes (sauf le VB) utilisent le shortcutting, donc seul a est évalué.

 


edit: merde, bidem a raison l'opérateur booléen c'est "&&" pas "&" [:sisicaivrai]

letesp a écrit :

Sinon est-ce que la complexité de ceci:

 

int a;
for(int i=0; i<4; i++){
   a=i;
}

 

est plus grande que cela:

 

int a;
a=0;
a=1;
a=2;
a=3;

 


Merci


Je ne vois pas comment ça pourrait l'être


Message édité par masklinn le 06-07-2007 à 09:37:48

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1583092
Bidem
Posté le 06-07-2007 à 09:29:08  profilanswer
 

Citation :

a=false;
b=c=d=true;
result = a & b & c & d;
 
Est-ce que le calcul est fini dès que a est évalué, ou est-ce qu'il continu?


 
vu comment c'est écrit, toute l'expression est évaluée. Si tu veux utiliser les shortcut, il faut écrire comme suit :
 
result = a && b && c && d;

n°1583111
letesp
Posté le 06-07-2007 à 10:10:47  profilanswer
 

Citation :

vu comment c'est écrit, toute l'expression est évaluée. Si tu veux utiliser les shortcut, il faut écrire comme suit :
 
result = a && b && c && d;
 


Oui effectivement  :pt1cable: . Pour l'instant je fais surtout du pseudo-code, ce qui explique les erreurs de syntaxe.
 
 

Citation :

Je ne vois pas comment ça pourrait l'être
 


Bah je n'en ai aucune idée non plus. Je m'étais dit que à chaque boucle, il y avait une opération d'incrémentation sur le i, et peut-être une comparaison pour vérifier qu'il ne dépasse pas la valeur maximum. Ca parait forcément insignifiant pour une boucle qui va jusqu'à 4.
 
Mais comme je l'ai dit c'est pour du traitement d'images. Pour certains filtres, il faut faire 2 boucles for pour parcourir toute l'image, et 2 autres boucles for à l'intérieur pour parcourir les 8 voisins (ou 24, ou 48...). Et ensuite il faut enchainer les filtres.
 
Alors la moindre miliseconde que l'on peut gagner sur une boucle peut avoir une grosse incidence au final
 
 
Merci de vos réponses pour les opérations logiques en tout cas.


Message édité par letesp le 06-07-2007 à 10:11:43
n°1585464
jagstang
Pa Capona ಠ_ಠ
Posté le 11-07-2007 à 22:50:57  profilanswer
 

pour la traitement d'image, tu est obligé de faire des boucles imbriqueés (4 en général) pour réaliser ton traitement d'image. Il n'y a pas vraiment d'optimisation possible (sauf dans le cas de filtres particulier, avec un structuring element particulier par exemple)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1589336
jyles
Posté le 20-07-2007 à 13:50:34  profilanswer
 

letesp a écrit :

Bonjour,
 
Sinon est-ce que la complexité de ceci:
 
int a;
for(int i=0; i<4; i++){
   a=i;
}
 
est plus grande que cela:
 
int a;
a=0;
a=1;
a=2;
a=3;
 
Merci


 
Il y a fort à parier que le compilateur va transformer ta boucle en une suite d'assignations, comme tu l'as fait, vu que tout peut être déterminé au compile-time. Et s'il est très malin, il va peut-être même supprimer les trois premières qui sont tout à fait inutiles... On serait étonné de voir tout ce que peuvent faire les compilateurs modernes ;)

n°1589352
jyles
Posté le 20-07-2007 à 14:07:04  profilanswer
 

jyles a écrit :


 
Il y a fort à parier que le compilateur va transformer ta boucle en une suite d'assignations, comme tu l'as fait, vu que tout peut être déterminé au compile-time. Et s'il est très malin, il va peut-être même supprimer les trois premières qui sont tout à fait inutiles... On serait étonné de voir tout ce que peuvent faire les compilateurs modernes ;)


 
Je viens de vérifier, et à mon grand désarroi, il n'en est rien... C'est nul javac ! ^^

n°1589501
masklinn
í dag viðrar vel til loftárása
Posté le 20-07-2007 à 16:27:46  profilanswer
 

jyles a écrit :


 
Je viens de vérifier, et à mon grand désarroi, il n'en est rien... C'est nul javac ! ^^


C'est pas nouveau ça


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 20-07-2007 à 16:27:46  profilanswer
 

n°1589639
plzhelp
Posté le 21-07-2007 à 00:29:49  profilanswer
 

jyles a écrit :


 
Je viens de vérifier, et à mon grand désarroi, il n'en est rien... C'est nul javac ! ^^


 
Juste par curiosité (débutant java inside), comment tu as fait pour savoir comment travaillait javac?


---------------
...
n°1589644
masklinn
í dag viðrar vel til loftárása
Posté le 21-07-2007 à 00:55:33  profilanswer
 

plzhelp a écrit :


 
Juste par curiosité (débutant java inside), comment tu as fait pour savoir comment travaillait javac?


Il est possible de décompiler les .class pour récupérer du bytecode lisible (ça ressemble un peu à de l'ASM de plus haut niveau).


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1589679
plzhelp
Posté le 21-07-2007 à 11:28:18  profilanswer
 

Ok, merci.


---------------
...
n°1589805
jyles
Posté le 22-07-2007 à 13:09:26  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  opérations et complexités

 

Sujets relatifs
[Java] Gestion d'un verrou pour des opérations RuntimeOperations sur Tableau à 2 dimention
Opérations matrices problème structure pointeurcout d'operations
[VBA] Opérations sur une série de données utilisée dans un graphiqueBarre de progresssion en même temps que des opérations [AutoIt3]
Operations error avec ldap_searchopérations sur les champ d'un graphique
[résolu] [qst] [débutant] Opérations pdt un parcours avec Iterator ?[Shell] Opérations entier
Plus de sujets relatifs à : opérations et complexités


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR