Jede iteration jedes "foreach" - Schleife generiert, die 24 Bytes der garbage-Speicher?

Mein Freund arbeitet mit Unity3D in C#. Und er sagte mir ausdrücklich:

Jeder iteration jeder "foreach" - Schleife generiert, die 24 Bytes der Müll
Speicher.

Und ich sehe auch, dass diese Informationen hier

Aber ist das wahr?

Den Absatz am meisten relevant zu meiner Frage:

Ersetzen Sie die "foreach" - Schleifen mit einfachen "for" - Schleifen. Für einige Grund,
jede iteration jedes "foreach" - Schleife generiert, die 24 Bytes der Müll
Speicher. Eine einfache Schleife 10 mal Durchlaufen gelassen 240 Byte Speicher
bereit, abgeholt zu werden, das war einfach inakzeptabel

  • Das ist viel zu allgemein sind, eine Aussage zu ernst genommen werden. Verschiedene Sammlungen Verhalten sich verschiedene Möglichkeiten, mit foreach - der Autor ist nicht angegeben, was er redet. (Insbesondere mit arrays den compiler effektiv etwas erzeugen, entspricht der for Schleife sowieso.)
  • Ja, ich denken Sie das gleiche. Ende der 'foreach' langsamer 'für'?
  • Es hängt ganz von dem jeweiligen Szenario ab. Jede Verallgemeinerung auf, die front ist wahrscheinlich falsch in einigen situation.
  • Das ganze Artikel zu Lesen ist, als "Dies war für uns in unserer besonderen situation". Es möglicherweise oder möglicherweise nicht das gleiche für Sie.
  • Tatsächlich, ich habe zu nehmen, dass Artikel mit einer Prise Salz, weil es behauptet ", den Aufruf der tag-Eigenschaft auf ein Objekt allokiert und kopiert die zusätzlichen Speicher" - wo tag hier ist ein string - sorry, aber das ist einfach nicht wahr - alles, was geschieht, ist, dass der Verweis auf die vorhandene string-Objekt kopiert wird, die auf dem stack - es gibt kein extra Objekt Reservierung hier.
InformationsquelleAutor jimpanzer | 2013-09-10
Schreibe einen Kommentar