Question con: Quel est le plus optimal? [JAVA] - Java - Programmation
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..
Marsh Posté le 13-04-2004 à 23:04:53
Voila ce que me donne la moulinette :
Code :
|
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?
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.
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?
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
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 <=
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).
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... |
Bah noi, je fais un test en boucle pour choper la coordonnée minimale d'une liste de composants...
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. |
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?
Marsh Posté le 13-04-2004 à 23:28:30
Yoyo@ a écrit : Oui, mais tout le dilemne est la...: |
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.
Marsh Posté le 13-04-2004 à 23:30:30
ReplyMarsh Posté le 13-04-2004 à 23:31:36
toi tu veux un goat.cx en mp non ?
Marsh Posté le 13-04-2004 à 22:59:44
Voila, je me posais une question...
Vaut il mieux faire :
ou alors:
d'un point de vue des performances bien sur...