Question

Je suis curieux. Le scénario est une application web / site avec par exemple 100 de connexions simultanées et beaucoup (20?) Page se charge par seconde.

Si les besoins d'applications au serveur une chaîne formatée

string.Format("Hello, {0}", username);

Est-ce que le "Bonjour, {0}" être interné? Ou serait-ce que interné avec

string hello = "Hello, {0}";
string.Format(hello, username);

Ce qui, en ce qui concerne interner, donnerait de meilleures performances: ci-dessus ou,

StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);

ou même

string hello = "Hello, {0}";
StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);

Alors mes questions principales sont les suivantes: 1) Est-ce un string.Format littéral être interné 2) Est-il utile la fixation d'un nom de variable pour une stringbuilder pour une recherche rapide, ou 3) La recherche elle-même assez lourd (si # 1 ci-dessus est un non)

Je sais que cela entraînerait probablement des gains minuscules, mais comme je l'ai dit que je suis curieux.

Était-ce utile?

La solution

String.Format utilise en fait un StringBuilder interne, donc il n'y a aucune raison d'appeler directement dans votre code. En ce qui interner du littéral est concerné, les deux versions de code sont les mêmes que le compilateur C # va créer une variable temporaire pour stocker le littéral.

Enfin, l'effet d'interner dans une page Web est négligeable. Le rendu des pages est essentiellement une opération de manipulation de chaîne lourde de sorte que la différence est négligeable interner marques. Vous pouvez obtenir des avantages beaucoup plus de performance d'une manière beaucoup plus facile en utilisant la page et la mise en cache de contrôle.

Autres conseils

Il existe une méthode statique méthode String.IsInterned (str). Vous pouvez faire des tests et trouver!

http://msdn.microsoft.com/en- nous / bibliothèque / system.string.isinterned.aspx

Réponse rapide:. Exécuter un 100k itérations et savoir

Vous ne pouvez pas battre

return "Hello, " + username;

si votre scénario est vraiment aussi simple que cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top