Est-ce que String.Format est aussi efficace que StringBuilder

Supposons que j'ai un stringbuilder en C

请先 登录 后评论

4 réponses

saalon

Je pense que dans la plupart des cas comme cette clarté, et non l'efficacité, devrait être votre plus grande préoccupation. À moins que vous n'écrasiez des tonnes de cordes ou que vous ne construisiez quelque chose pour un appareil mobile moins puissant, cela n'affectera probablement pas beaucoup votre vitesse de course.

J'ai constaté que, dans les cas où je construis des chaînes de manière assez linéaire, faire des concaténations directes ou utiliser StringBuilder est votre meilleure option. Je suggère cela dans les cas où la majorité de la chaîne que vous construisez est dynamique. Étant donné que très peu de texte est statique, le plus important est qu'il soit clair où chaque élément de texte dynamique est placé au cas où il aurait besoin d'être mis à jour à l'avenir.

D'autre part, si vous parlez d'un gros morceau de texte statique contenant deux ou trois variables, même si c'est un peu moins efficace, je pense que la clarté que vous gagnez avec string.Format en vaut la peine . Je l'ai utilisé plus tôt cette semaine lorsque j'ai dû placer un morceau de texte dynamique au centre d'un document de 4 pages. Il sera plus facile de mettre à jour ce gros morceau de texte s'il est en un seul morceau que d'avoir à mettre à jour trois morceaux que vous concaténerez ensemble.

请先 登录 后评论
GateKiller

Dans les deux cas ci-dessus, je souhaite injecter une ou plusieurs chaînes au milieu d'une chaîne de modèle prédéfinie.

Dans ce cas, je dirais que String.Format est le plus rapide car il est conçu dans ce but précis.

请先 登录 后评论
McDowell

Je m'attendrais à ce que String.Format soit plus lent - il doit analyser la chaîne et ensuite la concaténer.

Quelques remarques :

  • Le format est la voie à suivre pour les chaînes visibles par l'utilisateur dans les applications professionnelles ; cela évite les bugs de localisation
  • Si vous connaissez à l'avance la longueur de la chaîne résultante, utilisez le constructeur StringBuilder(Int32) pour prédéfinir la capacité
请先 登录 后评论
Vaibhav

J'ai exécuté quelques tests de performances rapides, et pour 100 000 opérations en moyenne sur 10 exécutions, la première méthode (String Builder) prend presque la moitié du temps de la seconde (String Format).

Donc, si cela n'est pas fréquent, cela n'a pas d'importance. Mais s'il s'agit d'une opération courante, vous pouvez utiliser la première méthode.

请先 登录 后评论
  • 16 abonnés
  • 0 favoris,606 Feuilleter
  • lomaxx posée à 2023-03-27 21:06