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

  FORUM HardWare.fr
  Programmation
  Java

  Java Compilation ?? Min et Max ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Java Compilation ?? Min et Max ?

n°877074
The Flint
Will for ever
Posté le 19-10-2004 à 15:47:38  profilanswer
 

Oula la, excusez moi j'ai un gros dilemme là, un pote vient de me dire
qu'il valait mieux recoder min et max "in line" au lieu d'utiliser java.lang.Math :
du genre  
 

Code :
  1. public void myMethod1() {
  2.   int a,b;
  3.   .... code qui va affecter a et b
  4.   int mini = a<b?a:b;
  5.   ... faire ce qu'on veut avec mini
  6. }


plutôt que :
 

Code :
  1. public void myMethod2() {
  2.   int a,b;
  3.   .... code qui va affecter a et b
  4.   int mini = Math.min(a,b);
  5.   ... faire ce qu'on veut avec mini
  6. }


 
Apparement MyMethod1 serait plus rapide à l'execution.
Je sais qu'en C, ce genre d'argument tient, mais ça marche toujours en java ?

mood
Publicité
Posté le 19-10-2004 à 15:47:38  profilanswer
 

n°877099
nico168
Posté le 19-10-2004 à 16:11:59  profilanswer
 

ben... j'en sais rien mais ca me parait pas tres compliqué de faire un benchmark

n°877106
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:14:43  profilanswer
 

Pure branlette. Si tu as de telles contraintes de vitesse, OK, si c'est juste pour faire le code le plus buggé possible car tu passes ton temps à réinventer la roue (et de préférence mal)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877109
axk47
Java Man vs Boolet Man
Posté le 19-10-2004 à 16:18:43  profilanswer
 

Eviter les postes inutiles  
ça pollue le forum pour rien

n°877112
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:19:46  profilanswer
 

axk47 a écrit :

Eviter les postes inutiles  
 


 
Bah pourquoi tu poste alors ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877113
The Flint
Will for ever
Posté le 19-10-2004 à 16:19:56  profilanswer
 

kadreg a écrit :

Pure branlette. Si tu as de telles contraintes de vitesse, OK, si c'est juste pour faire le code le plus buggé possible car tu passes ton temps à réinventer la roue (et de préférence mal)


Je suis d'accord, mais comme c'est l'argument qui est avancé (la vitesse d'execution) j'aimerai savoir si il est un tant soit peu valable, ou c'est c'est du pipeau.
 
En gros, on se dit ok : dans le premier cas, après avoir précopilé, tout le code est dans mon fichier .class, et donc, à l'execution, pas besoin d'aller chercher du code dans une autre classe comme c'est le cas dans la deuxieme méthode.
Qu'en pensez vous ?

n°877115
The Flint
Will for ever
Posté le 19-10-2004 à 16:20:42  profilanswer
 

axk47 a écrit :

Eviter les postes inutiles  
ça pollue le forum pour rien


 
On voudrait savoir à qui tu causes ?

n°877116
chrisbk
-
Posté le 19-10-2004 à 16:21:03  profilanswer
 

Faut faire une injection de bytecode en RT.


---------------
NP: HTTP Error 764 Stupid coder found
n°877119
skeye
Posté le 19-10-2004 à 16:21:40  profilanswer
 

The Flint a écrit :


Qu'en pensez vous ?


Que tu devrais pouvoir tester ça facilement et qu'on attend tes résultats!:o


Message édité par skeye le 19-10-2004 à 16:21:55

---------------
Can't buy what I want because it's free -
n°877120
The Flint
Will for ever
Posté le 19-10-2004 à 16:21:47  profilanswer
 

chrisbk a écrit :

Faut faire une injection de bytecode en RT.


 
Hein ???

mood
Publicité
Posté le 19-10-2004 à 16:21:47  profilanswer
 

n°877121
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:25:08  profilanswer
 

The Flint a écrit :


Qu'en pensez vous ?


 
Que le classLoader garde en mémoire les classes chargées, ainsi que la table des opérations. Effectivement, il y a un appel de méthode supplémentaire, mais c'est une méthode statique, donc c'est pas couteux car il y a pas le méca de réso auto des surcharge.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877122
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:25:37  profilanswer
 

chrisbk a écrit :

Faut faire une injection de bytecode en RT.


 
crisse :love:


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877125
the real m​oins moins
Posté le 19-10-2004 à 16:27:09  profilanswer
 

2


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°877133
lorill
Posté le 19-10-2004 à 16:30:32  profilanswer
 

3 :bounce:

n°877136
chrisbk
-
Posté le 19-10-2004 à 16:30:57  profilanswer
 


 
Simple
Avant de charger un .class, tu examines le bytecode a la recherche d'un appel a Math.min(). Tu regardes un peu en arriere les deux parametres balancé sur la pile, tu vire les deux push des appels et le call, et tu remplaces ca par un truc genre :
 

Code :
  1. fload variable1
  2. fload variable2
  3. jmp_ge label:
  4. fload variable2
  5. jmp label2:
  6. fload variable1;
  7. label2:


 
 
Et hop, tu sauvegardes et tu redirige le chargement de la classe sur ton BC ainsi modifié. Gaffe que les constantes/variables locales/membres/statique se balancent pas sur la pile de la meme maniere.
Sinon c'est aussi simple que cela. De l'inling fait main pour JVM poussive. Tu peux meme l'adapter au type et tout. La classe


---------------
NP: HTTP Error 764 Stupid coder found
n°877138
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:33:03  profilanswer
 


 
trois
 
 
 
J'ai gagné :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877140
chrisbk
-
Posté le 19-10-2004 à 16:34:48  profilanswer
 

Citation :

Que le classLoader garde en mémoire les classes chargées, ainsi que la table des opérations. Effectivement, il y a un appel de méthode supplémentaire, mais c'est une méthode statique, donc c'est pas couteux car il y a pas le méca de réso auto des surcharge.


 
 
Mon pauvre kadreg, tu vieillis. Deja la resolution de surcharge, foutaise. Une surcharge ca se choisi a la compilation, donc bon. Je suppose que tu voulais dire de fonctions redefinies, celle qu'on appeleraient virtuelle dans un bon C++ des familles, et la, la v-table debarque.
 
Donc en gros en faisant un appel sur une fonction statique plutot que sur une fonction normale, on evite:
 
le push du this
le saut indirect de la v-table (soit en gros sur intel : mov eax,this; [add eax, [dep-vtable]]; mov eax, [eax]; call [eax+idFonction]), au lieu d'un appel direct (call maFonction). ce qui est généralement assez negligeable


---------------
NP: HTTP Error 764 Stupid coder found
n°877146
The Flint
Will for ever
Posté le 19-10-2004 à 16:37:04  profilanswer
 

gnark, c'est bon à savoir mais je n'en demandais pas tant, tout ce que je voulais savoir c'était si mon pote avait raison de refaire son min à chaque fois plutôt que d'appeler Math.min .

n°877149
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:37:19  profilanswer
 

chrisbk a écrit :

Mon pauvre kadreg, tu vieillis. Deja la resolution de surcharge, foutaise. Une surcharge ca se choisi a la compilation, donc bon. Je suppose que tu voulais dire de fonctions redefinies, celle qu'on appeleraient virtuelle dans un bon C++ des familles, et la, la v-table debarque.


 
J'ai oublié le nom de ce truc là, ouais.
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877152
chrisbk
-
Posté le 19-10-2004 à 16:38:35  profilanswer
 

The Flint a écrit :

gnark, c'est bon à savoir mais je n'en demandais pas tant, tout ce que je voulais savoir c'était si mon pote avait raison de refaire son min à chaque fois plutôt que d'appeler Math.min .


 
Non, il a tord, ca rend son code tout moche, cracra, beurk, et tout ca pour rien


---------------
NP: HTTP Error 764 Stupid coder found
n°877161
The Flint
Will for ever
Posté le 19-10-2004 à 16:43:17  profilanswer
 

Il me semble pourtant que tu racontais le contraire quelques posts plus tôt ???

n°877165
chrisbk
-
Posté le 19-10-2004 à 16:44:35  profilanswer
 

en fait la vérité, c'est que bon, pour un min je crois bien que je m'en fous, mes ascendant C de la vieille epoque me pousserait a faire de l'inlining (methode de ton pote), mais la flemme moderne me pousserait a faire Math.roger
 
alors bon


---------------
NP: HTTP Error 764 Stupid coder found
n°877166
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:44:49  profilanswer
 

The Flint a écrit :

Il me semble pourtant que tu racontais le contraire quelques posts plus tôt ???


 
Il disait que le gain est tellement minime que ça vaut pas le cout d'augmenter la complexité du code, et donc diminuer sa maintenabilité.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877172
The Flint
Will for ever
Posté le 19-10-2004 à 16:48:31  profilanswer
 

Bon, ok. Je vais lui dire ça, mais comme c'est plutôt un vieux de la vieille du C++ et du C, il va m'envoyer chier.

n°877182
the real m​oins moins
Posté le 19-10-2004 à 16:53:41  profilanswer
 

jette lui des cailloux


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°877184
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:53:55  profilanswer
 

The Flint a écrit :

Bon, ok. Je vais lui dire ça, mais comme c'est plutôt un vieux de la vieille du C++ et du C, il va m'envoyer chier.


 
Dit lui que c'est un dino inadapté aux technologies du génie logiciel moderne [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877187
The Flint
Will for ever
Posté le 19-10-2004 à 16:55:11  profilanswer
 

kadreg a écrit :

Dit lui que c'est un dino inadapté aux technologies du génie logiciel moderne [:spamafote]


 
Je cherche à le convaincre, pas à se qu'on se tape sur la gueule...

n°877190
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 16:57:05  profilanswer
 

The Flint a écrit :

Je cherche à le convaincre, pas à se qu'on se tape sur la gueule...


 
spareil
 
(kad, consultant méthodes et process logiciels à la pelle à clous)


Message édité par kadreg le 19-10-2004 à 16:57:34

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877193
skeye
Posté le 19-10-2004 à 16:57:59  profilanswer
 

The Flint a écrit :

Je cherche à le convaincre, pas à se qu'on se tape sur la gueule...


convaincre un adepte du C c'est comme parler à un mur...:o


Message édité par skeye le 19-10-2004 à 16:58:05

---------------
Can't buy what I want because it's free -
n°877196
The Flint
Will for ever
Posté le 19-10-2004 à 17:01:06  profilanswer
 

Vous n'êtes pas très encourageants.

n°877197
the real m​oins moins
Posté le 19-10-2004 à 17:01:40  profilanswer
 

c'est parce qu'on a de l'experience [:franck75]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°877198
kadreg
profil: Utilisateur
Posté le 19-10-2004 à 17:02:08  profilanswer
 

the real moins moins a écrit :

c'est parce qu'on a de l'experience [:franck75]


 
Et une grosse bite  [:franck75]
 
(enfin, surtout moi)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°877202
skeye
Posté le 19-10-2004 à 17:02:44  profilanswer
 

The Flint a écrit :

Vous n'êtes pas très encourageants.


Quand tu te seras tapé quelques scripts pl/sql à la con juste parce-que ton chef veut pas reconnaitre qu'il y a plus pratique pour faire la même chose, tu comprendras...[:dawa]


---------------
Can't buy what I want because it's free -
n°877205
The Flint
Will for ever
Posté le 19-10-2004 à 17:08:21  profilanswer
 

skeye a écrit :

Quand tu te seras tapé quelques scripts pl/sql à la con juste parce-que ton chef veut pas reconnaitre qu'il y a plus pratique pour faire la même chose, tu comprendras...[:dawa]


 
C'est marrant mais là, je trouve l'exemple très parlant  :)

mood
Publicité
Posté le   profilanswer
 


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

  Java Compilation ?? Min et Max ?

 

Sujets relatifs
JAVA, J2EE Servlet EJB JSP[JAVA] Pb avec fenetre popup
[SQL] Fonction MAX[Swish Max] Cherche bon player MP3 ... sous SWISH!
[wxwidget] Problème de compilation sous linuxTraduction code Python en Java
Java + Excelmulti-compilation avec gcc sous VisualC++ 6
[Java] Problème d'execution avec le jdk1.5.0 (commande java)Lire avec JAVA des infos de Access
Plus de sujets relatifs à : Java Compilation ?? Min et Max ?


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