[JAVA] Question con: Quel est le plus optimal?

Question con: Quel est le plus optimal? [JAVA] - Java - Programmation

Marsh Posté le 13-04-2004 à 22:59:44    

Voila, je me posais une question...
 
Vaut il mieux faire :
 

Code :
  1. if (tempMinX<minX)
  2.   minX=tempMinX;


 
ou alors:
 

Code :
  1. tempMinX=Math.min(tempMinX, minX);


 
d'un point de vue des performances bien sur...

Reply

Marsh Posté le 13-04-2004 à 22:59:44   

Reply

Marsh Posté le 13-04-2004 à 23:01:45    

regarde la moulinette de Math.min .. mais surment que ca été bien pensé qu'une condition if..

Reply

Marsh Posté le 13-04-2004 à 23:04:53    

Voila ce que me donne la moulinette :
 

Code :
  1. public static long min(long a, long b) {
  2.   return (a <= b) ? a : b;
  3. }


 
Le probleme avec la version Min, c qu'il y a affectation quelle que soit la situation, ce qui n'est pas le cas avec ma version avec if...
 
So?

Reply

Marsh Posté le 13-04-2004 à 23:11:16    

utilises Math.min, c'est le genre de truc qui se fait inliner au chargement de la méthode.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-04-2004 à 23:14:25    

nraynaud a écrit :

utilises Math.min, c'est le genre de truc qui se fait inliner au chargement de la méthode.


 
Adjugé, Math.mon alors? Malgré l'affectation qui se fait a chaque fois?
 
Sinon, tu parles d'"inlinage" en Java. Je ne savais pas que ca pouvait exister. Est ce que c possible de créer ses propres fonctions Inline? Ou alors d'inciter la VM a le faire?

Reply

Marsh Posté le 13-04-2004 à 23:17:14    

nraynaud a écrit :

utilises Math.min, c'est le genre de truc qui se fait inliner au chargement de la méthode.

j'aurais tendance à dire que ça dépend du contexte de l'utilisation moi: suivant l'utilisation du test conditionnel, l'un ou l'autre peut avoir plus de sens, d'un point "lecture du code", quoi...  
Si je fais des math, j'irai voir Math.min, si je fais une operation en boucle jusqu'a atteindre une certaine valeur seuil, je ferais un bete if x<y [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 23:17:52    

en fait la GROSSE difference que je vois c'est que ton test fais un < alors que Math.min fait un <= [:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 23:19:04    

Yoyo@ a écrit :

Est ce que c possible de créer ses propres fonctions Inline? Ou alors d'inciter la VM a le faire?

1) oui, n'importe quelle fonction peut se retrouver inlinée, c'est la VM qui décide en fonction de ses critères.
2) oui, en écrivant un code aussi normal et intutif que possible (et des méthodes de moins de 15 lignes).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-04-2004 à 23:19:10    

the real moins moins a écrit :

j'aurais tendance à dire que ça dépend du contexte de l'utilisation moi: suivant l'utilisation du test conditionnel, l'un ou l'autre peut avoir plus de sens, d'un point "lecture du code", quoi...  
Si je fais des math, j'irai voir Math.min, si je fais une operation en boucle jusqu'a atteindre une certaine valeur seuil, je ferais un bete if x<y [:spamafote]


 
Bah noi, je fais un test en boucle pour choper la coordonnée minimale d'une liste de composants...


Message édité par Yoyo@ le 13-04-2004 à 23:25:09
Reply

Marsh Posté le 13-04-2004 à 23:22:42    

nraynaud a écrit :

1) oui, n'importe quelle fonction peut se retrouver inlinée, c'est la VM qui décide en fonction de ses critères.
2) oui, en écrivant un code aussi normal et intutif que possible (et des méthodes de moins de 15 lignes).


 
Oui, mais tout le dilemne est la...:
Je ne sais pas si ma méthode se ferait inlinée, donc, finalement, plus que d'inclure mon bout de code fonctionnel dans une méthode a part entiere, je l'incls directement dans le code principal donc : pas de méthode => pas d'inlineage.
 
Genre, si je créais ma propre fonction carrée, j'aurais intéret, sachant que je l'utilise 100 fois dans une boucle, a la mettre dans une méthode ou alors directement a faire x = a*a?
 

Reply

Marsh Posté le 13-04-2004 à 23:22:42   

Reply

Marsh Posté le 13-04-2004 à 23:28:30    

Yoyo@ a écrit :

Oui, mais tout le dilemne est la...:
Je ne sais pas si ma méthode se ferait inlinée, donc, finalement, plus que d'inclure mon bout de code fonctionnel dans une méthode a part entiere, je l'incls directement dans le code principal donc : pas de méthode => pas d'inlineage.
 
Genre, si je créais ma propre fonction carrée, j'aurais intéret, sachant que je l'utilise 100 fois dans une boucle, a la mettre dans une méthode ou alors directement a faire x = a*a?

heu, quand le compilo refuse d'inliner, c'est parce qu'il pense que ça sera plus lent.
 
ta fonction carré, tu as tout intérêt à en faire une fonction, c'est plus lisible (et inlinable si le compilo le juge utile).
 
mais je réitère mon conseil vu que tu sembles un peu dur de la feuille : écris un code aussi normal et intutif que possible (et des méthodes de moins de 15 lignes)
 
Arrête de penser inlining etc. Si tu as des problèmes de perfs, tu utiliseras un profiler et des outils d'analyse adéquats. Faire un logiciel rapide, c'est pas faire un bloatware, mais faire quelquechose d'intelligent.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-04-2004 à 23:30:30    

[:cupra]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 23:31:36    

toi tu veux un goat.cx en mp non ?


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed