Meilleures pratiques et précautions en C# pour Unity

1, 2025-02-08

Lors de la déclaration de collections, il est déconseillé de les chaîner. Par exemple :

positionsList = rotationsList = new List<float>();

Cette approche est problématique car les collections sont implémentées comme des listes chaînées, ce qui entraîne une fusion des données lors de l'ajout d'éléments.

La syntaxe correcte devrait être :

positionsList = new List<float>();
rotationsList = new List<float>();

2, 2025-02-25

En termes de performence, l'efficacité de deux boucles for distinctes par rapport à une boucle for combinée dépend du contexte d'utilisation et de l'ampleur des données. Voici une analyse détaillée :

1. Deux boucles for distinctes

csharpCopier``` for (int index = 0; index < listeAnimationGauche.Count; index++) { // Traitement de listeAnimationGauche[index] } for (int index = 0; index < listeAnimationDroite.Count; index++) { // Traitement de listeAnimationDroite[index] }


csharpCopier```
int tailleMaximale = Mathf.Max(listeAnimationDroite.Count, listeAnimationGauche.Count);
for (int index = 0; index < tailleMaximale; index++)
{
    if (index < listeAnimationDroite.Count)
    {
        // Traitement de listeAnimationDroite[index]
    }
    if (index < listeAnimationGauche.Count)
    {
        // Traitement de listeAnimationGauche[index]
    }
}

csharpCopier``` for (int index = 0; index < listeAnimationGauche.Count; index++) { // Traitement de listeAnimationGauche[index] } for (int index = 0; index < listeAnimationDroite.Count; index++) { // Traitement de listeAnimationDroite[index] }



2. **Une boucle `for` combinée** :


- Convient lorsque les listes ont des tailles similaires et que les traitements peuvent s'exécuter en parallèle.
- Par exemple :

csharpCopier```
int tailleMaximale = Mathf.Max(listeAnimationDroite.Count, listeAnimationGauche.Count);
for (int index = 0; index < tailleMaximale; index++)
{
    if (index < listeAnimationDroite.Count)
    {
        // Traitement de listeAnimationDroite[index]
    }
    if (index < listeAnimationGauche.Count)
    {
        // Traitement de listeAnimationGauche[index]
    }
}

Conclusion

  • Différence de performance :
  • Dans la plupart des cas, la différence de performance entre les deux approches est négligeable.
  • Pour de très grandes listes avec des traitements simples, deux boucles distinctes peuvent être légèrement plus rapides (meilleure utilisation du cache).
  • Lisibilité du code :
  • Deux boucles distinctes sont généralement plus claires et plus faciles à maintenir.
  • Recommandation :
  • Si les traitements des deux listes sont indépendants, privilégiez deux boucles distinctes.
  • Si les traitements peuvent s'exécuter en parallèle et que les listes ont des tailles similaires, envisagez une boucle combinée.

Choisissez la méthode qui correspond le mieux à vos besoins spécifiques !

Étiquettes: Unity C# performance Optimisation collections

Publié le 9 juillet à 18h43