Combien coûte de lancer un object?

Dupliquer possible:
Perfomance de TypeCasting

Combien coûte-t-il de lancer un object comme un autre object?

CustomClass instance = GenericObject as CustomClass 

Devrait-il être évité à tout prix?

Vouloir voir comment les autres pensent à ce sujet. Je suis sûr que c’est très situationnel.

Évitez de vous inquiéter des conséquences sur les performances de fonctionnalités de langage spécifiques, sauf si vous avez des preuves spécifiques (mesures) qu’elles posent effectivement un problème.

Vos principales préoccupations devraient être la justesse du code et sa facilité de maintenance.

De manière générale, toutefois, il est souvent possible d’éviter une diffusion inutile en C # en appliquant de bonnes pratiques de programmation OO et en utilisant les génériques (en particulier les collections) de manière appropriée. Dans les cas où vous devez effectuer un transtypage, il est très peu probable que vous renconsortingez des problèmes de performances, sauf si vous le faites en boucle serrée ou avec des types susceptibles de générer une exception de diffusion non valide.

La plupart des problèmes de performances dans le monde réel résultent de choix d’algorithmes ou d’un manque de connaissance de la plate-forme elle-même, et non de fonctionnalités linguistiques spécifiques.

Non, cela ne devrait pas être évité à tout prix. Casting n’est pas très cher. Bien sûr, si vous avez une boucle qui s’exécute un million de fois par seconde, il peut être judicieux d’éviter les conversions afin de préserver les performances, sinon cela ne posera pas vraiment de problèmes de performances.

Le vrai problème avec le casting est que c’est la sécurité du type sortingcherie. Si vous ne faites pas attention, il n’est pas trop difficile d’introduire des bogues ou de diminuer la lisibilité du code si vous lancez des choses partout.

Si vous pouvez utiliser des génériques, c’est une meilleure solution que le casting. La boxe et le déballage sont une opération coûteuse qui devrait être évitée si possible. Le problème est que parfois, cela ne peut tout simplement pas être évité.

De plus, l’autre réponse mentionnée ici est que s’inquiéter de quelque chose comme la boxe est très sortingvial comparé aux préoccupations de performances spécifiques ou à la maintenabilité du code. Je suis complètement d’accord avec ça.

En règle générale, le coût de la casting d’un object sur une base ad hoc est peu élevé. Toutefois, si vous lancez plusieurs fois des objects à plusieurs resockets, vous devez essayer de les éviter si vous estimez que cela peut être à l’origine d’un problème de performances.

Après tout, l’une des principales améliorations apscopes à .NET 1.1 à 2.0 a été l’introduction des génériques – elle traitait du problème des listes d’objects fortement typées (par exemple, ArrayList = basé sur l’object, List = liste typée)