Oh - après la lecture de l'une des autres réponses, j'ai essayé d'inverser l'ordre des opérations, d'effectuer la concaténation d'abord, puis de la Chaîne.Format de...
Bill Gates
Console.WriteLine(p.FirstName + " " + p.LastName); took: 8ms - 30488 ticks
Bill Gates
Console.WriteLine("{0} {1}", p.FirstName, p.LastName); took: 0ms - 182 ticks
Donc, l'ordre des opérations fait une ÉNORME différence, ou plutôt la première opération est TOUJOURS beaucoup plus lent.
Voici les résultats d'une course où les opérations sont terminées plus d'une fois. J'ai essayé de changer les commandes, mais les choses suivent en général les mêmes règles, une fois que le premier résultat est ignoré:
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 5ms - 20335 ticks
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 0ms - 156 ticks
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 0ms - 122 ticks
Bill Gates
Console.WriteLine("{0} {1}", FirstName, LastName); took: 0ms - 181 ticks
Bill Gates
Console.WriteLine("{0} {1}", FirstName, LastName); took: 0ms - 122 ticks
Bill Gates
String.Concat(FirstName, " ", LastName); took: 0ms - 142 ticks
Bill Gates
String.Concat(FirstName, " ", LastName); took: 0ms - 117 ticks
Comme vous pouvez le voir les passages suivants de la même méthode (j'ai refait le code en 3 méthodes) sont progressivement plus rapide. La manière la plus rapide semble être la Console.WriteLine(String.Concat(...)) de la méthode, suivi par les normal de concaténation, et puis la mise en forme des opérations.
Le délai initial de démarrage est probablement l'initialisation de la Console de Flux, que la pose d'une Console.Writeline("Start!") avant la première opération apporte tous les temps de retour en ligne.