Bonjour à tous,
Je suis un développeur C++ actuellement en train d'apprendre Java (principalement pour de la prog Android).
Ce langage est réellement génial, mais y a quelque chose que j'ai du mal à assimiler:
Je comprend bien que l'appel à l’opérateur new est moins coûteux en java qu'en C++ (même si apparemment cela dépend de la JVM) mais ce que je ne comprend pas, c'est qu'il ne soit simplement pas possible d'allouer des objets sur la pile.
Ex:
Si en C++ j'ai une structure de ce type:
je peux écrire cela dans une fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 struct SVertex { float x; float y; float z; float u; float v; };
l'allocation et la de-allocation n'ont alors quasiment aucun impact étant donnée que le tableau est alloué sur la pile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void fnc( ) { SVertex vertexArray[256]; }
Seulement en Java, je ne peux (à ma connaissance) pas faire cela, il ne me reste que l'opérateur new comme alternative:
Cela n'a certainement aucun impact si ce code n'est réalisé que lors du démarrage de l'appli, mais si cette fonction est appelée 200 fois par frame (dans le cas d'une appli graphique) cela doit être plus pénalisant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void fnc( ) { SVertex[] vertexArray = new SVertex[256]; }
Donc en somme, ma question est la suivante:
En java, somme nous obligé d'utiliser l'opérateur new pour crée des objects qui serviront de manière temporaire lors d'un phase de calcul ou autre ?
Est il possible d'écrire de nouvelles "primitives" en java (comme float ou int )
Quel sont vos conseil à ce sujet ??
Merci a vous tous !!
Cordialement,
Clément Vidal
Partager