Moi ce que j'ai compris c'est que avec le mot clef "unsafe", tu peux directement utiliser des pointeurs natifs dans le C#, et que donc tu peux travailler dans le dos du garbage collector.
genre
public void unsafe monGrosLeak() {
int monPoiteur = malloc(10);
}
Avec java tu écrirait:
public void native monGrosLeak();
puis tu passes ta classe dans javah, qui va générer des entêtes (.h) avec la signature C équivalente de ta méthode. Puis c'est à toi d'implementer la méthode C séparément et d'en faire une librairie.
C# permet donc d'utiliser rapidement du code natif, mais ca fait un mélange pas très heureux. Avec java, c'est plus long et fastidieux à écrire, mais tu a une séparation complête entre le code natif et le code java.
A mon avis, il faut se lever tôt pour arriver à gagner en performance en gérant sa mémoire soi même (dans du java et du C#).
En tout cas, pour mettre au même niveau C++, C# et vb, il ont du bien crader le C++... Avec un rapide coup d'oeuil sur msdn, on trouve des signatures C++ qui ressemblent à ca:
void __gc __delegate MaClasse::maMethode();
Ils ont peut être déposé C# dans les règles, mais le C++ en a pris un coup.
[^] # Re: Bof, pas d'accord avec lui.
Posté par Thomas Cataldo (site web personnel) . En réponse à la dépêche Critique de C# par James Gosling l'inventeur de Java. Évalué à 10.
genre
public void unsafe monGrosLeak() {
int monPoiteur = malloc(10);
}
Avec java tu écrirait:
public void native monGrosLeak();
puis tu passes ta classe dans javah, qui va générer des entêtes (.h) avec la signature C équivalente de ta méthode. Puis c'est à toi d'implementer la méthode C séparément et d'en faire une librairie.
C# permet donc d'utiliser rapidement du code natif, mais ca fait un mélange pas très heureux. Avec java, c'est plus long et fastidieux à écrire, mais tu a une séparation complête entre le code natif et le code java.
A mon avis, il faut se lever tôt pour arriver à gagner en performance en gérant sa mémoire soi même (dans du java et du C#).
En tout cas, pour mettre au même niveau C++, C# et vb, il ont du bien crader le C++... Avec un rapide coup d'oeuil sur msdn, on trouve des signatures C++ qui ressemblent à ca:
void __gc __delegate MaClasse::maMethode();
Ils ont peut être déposé C# dans les règles, mais le C++ en a pris un coup.