--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/1669804123.1529764.1636553348156.JavaMail.zimbra%40u-pem.fr.
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/1669804123.1529764.1636553348156.JavaMail.zimbra%40u-pem.fr.
public sealed interface Expr {
int eval(Map<String, Integer> variableMap);
// ...
record Value(int value) implements Expr {
@Override
public String toString() {
return "" + value;
}
@Override
public int eval(Map<String, Integer> variableMap) {
return value;
}
}//...
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CAG2ouxSjUMXa0u1j99bFZyVbcyz9Pxx%2BzzUkjvTb9N9BkT92Xw%40mail.gmail.com.
From: "Henri Tremblay" <henri.t...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Vendredi 12 Novembre 2021 18:17:10
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17
Super comme exercice.Je viens de jouer.J'ai regardé la solution Java 17 previewLe pattern matching me trouble.Ça me semble plus orienté objet.Je me demande un peu pourquoi, ci-dessous, ceci n'est pas mieux?public sealed interface Expr {
int eval(Map<String, Integer> variableMap);// ...record Value(int value) implements Expr {
@Override
public String toString() {
return "" + value;
}
@Override
public int eval(Map<String, Integer> variableMap) {
return value;
}
}//...
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADZL2%3Ds%2BPtWkK%2Bg0BPHp7wQ0ZwiXVkRSFB8PEaaf2AbCi4qOHA%40mail.gmail.com.
From: "Henri Tremblay" <henri.t...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Vendredi 12 Novembre 2021 18:17:10
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17
Super comme exercice.
Je viens de jouer.J'ai regardé la solution Java 17 previewLe pattern matching me trouble.Ça me semble plus orienté objet.Je me demande un peu pourquoi, ci-dessous, ceci n'est pas mieux?public sealed interface Expr {
int eval(Map<String, Integer> variableMap);// ...record Value(int value) implements Expr {
@Override
public String toString() {
return "" + value;
}
@Override
public int eval(Map<String, Integer> variableMap) {
return value;
}
}//...
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADZL2%3Ds%2BPtWkK%2Bg0BPHp7wQ0ZwiXVkRSFB8PEaaf2AbCi4qOHA%40mail.gmail.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/1952748088.2186370.1636739552192.JavaMail.zimbra%40u-pem.fr.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/1952748088.2186370.1636739552192.JavaMail.zimbra%40u-pem.fr.
From: "Henri Tremblay" <henri.t...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Samedi 13 Novembre 2021 20:41:40
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17
Intéressant.
Je ne sais pas si j'adhère, mais c'est intéressant.Je me dis qu'à un moment donné, tout va être codé eval.
Les tests unitaires vont être plus tannants et à force ça va faire pas mal de code dans cette méthode pour avoir une grammaire au complet.
On va perdre le inlining de la méthode mais j'imagine qu'on peut mettre des sous-méthodes au besoin.Ceci étant, je suis d'accord que ça permet de lire le tout d'un seul coup d'oeil.Question à côté: Si c'est plus rapide, pour la JVM ne remplace pas toute seule en switch le polymorphisme?
En particulier sur des sealed classes?
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADZL2%3DuhvXNdSKayEmZ7PTZqAsnxBKfSiF4MHUS4Ujkfq2_MDQ%40mail.gmail.com.
From: "Frédéric Camblor" <fcam...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Vendredi 12 Novembre 2021 19:58:29
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADH39nqde%3DPVjnwhuNMWN0YTv_%3DXp4gy2tzodzijRLTUXVju8g%40mail.gmail.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CAGbcYL%3DgnL3DObdPwJ0hG5j%3DPPOCnC1NDAELRpH2H%3Dcky1E%3DJQ%40mail.gmail.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/574153359.817875.1637050435776.JavaMail.zimbra%40u-pem.fr.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/1227651810.2333092.1636837291764.JavaMail.zimbra%40u-pem.fr.
From: "Remi Forax" <fo...@univ-mlv.fr>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Samedi 13 Novembre 2021 22:01:31
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17
From: "Henri Tremblay" <henri.t...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Samedi 13 Novembre 2021 20:41:40
Subject: Re: [LCC] Un petit kata pour découvrir les features de Java 17Intéressant.Je ne sais pas si j'adhère, mais c'est intéressant.Je me dis qu'à un moment donné, tout va être codé eval.
Question à côté: Si c'est plus rapide, pour la JVM ne remplace pas toute seule en switch le polymorphisme?Elle le fait, mais avec certaines contraintes.Le problème de l'inlining en rêgle générale, si tu inlines trop ton code devient très très lent car le code assembleur ne tiens pas dans le cache L1 et dans ce cas, tu as des cache-miss sur les instructions,le processeur est ralenti car les instructions sont pas encore arrivée. Et là tu as des perfs catastrophiques. Et si tu inlines pas, tu fais un appel à travers la vtable, et cela coûte pas si chère que cela.L'autre problème est que le choix de faire l'inlining ou pas est fait sur des informations partielles, un nouvel objet peut apparaitre car ta payload JSON est légèrement différente par exemple.Donc le choix de remplacer un appel polymorphe par un switch est fait de façon prudente par la VM.Pour Hotspot, si tu as au plus deux classes différentes à l'exécution, tu auras de l'inlining, sinon l'appel ne sera pas inliné.(Hotspot a aussi quelques limitations historiques du genre si tu as une méthode dans une classe abstraite, alors l'algo agi come si elle était dupliquée dans chaque sous-classe,c'est une limitation que Graal n'a pas).