2009-04-23 6 views
4

Lequel est le plus rapide? Lequel utilise moins de mémoire?Quel est le meilleur, en utilisant console.writeline() plusieurs fois ou en sauvegardant la sortie sur un stringbuilder et en appelant console.writeline une seule fois?

Console.WriteLine("string1") 
Console.WriteLine("string2") 
Console.WriteLine("string3") 
Console.WriteLine("stringNth") 

ou

StringBuilder output = new StringBuilder(); 
output.AppendLine("string1"); 
output.AppendLine("string2"); 
output.AppendLine("string3"); 
output.AppendLine("stringNth"); 
Console.WriteLine(output); 

grâce,

Répondre

8

Le premier.

La classe de console va mettre en mémoire tampon cela au flux de sortie standard. Avec la deuxième option, vous essayez de créer votre propre tampon, puis de le mettre à nouveau en mémoire tampon. Prenez le maximum - faites-le 10 000 000 fois. Votre StringBuilder finirait par dévorer toute votre mémoire, où la console cracherait juste la sortie.

0

La meilleure façon de savoir serait temps 10.000 itérations de chacun et de voir qui est plus rapide. Je soupçonne qu'ils seront presque identiques en termes de performance.

0

Puisqu'il s'agit d'une question vieille de 7 ans et que les réponses ici nécessitaient plus de clarté en ajoutant ma réponse.

Console.WriteLine sera plus lente. Mais il consommera moins de mémoire. Le second prendra plus de mémoire mais il sera beaucoup plus rapide.

Quelques statistiques: Écriture de 100 000 en utilisant Console.Writeline prend environ 30 secondes. L'utilisation du générateur de chaîne prend moins d'une seconde.

Si les chaînes sont petites, la mémoire ne sera pas un problème et l'utilisation de la seconde approche sera meilleure.

Questions connexes