Forums Neueste Beiträge
 

CompilationRelaxations / CompilationRelaxations.NoStringInterning

05/09/2007 - 17:56 von Hahnl Josef | Report spam
Hallo Experten,

kann mir bitte jemand verstàndlich die Bedeutung von
[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]
erklàren? Wozu ist dieses Assembly Attribute gut?

Besten Dank für Eure Bemühungen

Josef
 

Lesen sie die antworten

#1 Frank Dzaebel
05/09/2007 - 21:41 | Warnen spam
Hallo Josef,

Hallo Experten,
kann mir bitte jemand verstàndlich die Bedeutung von
[assembly:
CompilationRelaxations(CompilationRelaxations.NoStringInterning)]
erklàren? Wozu ist dieses Assembly Attribute gut?



Kurzbedeutung:
"NoStringInterning" markiert eine Assembly als eine, für die kein Interning
von Zeichenfolgenliteralen erforderlich ist. Ohne dieses Attribut würde die
CLR standardmàssig Interning nutzen. Da Interning auch negative
Leistungs-Aspekte haben kann, wurde dieses
Das Attribut hat nur Auswirkung, wenn die Assembly über den "Native Image
Generator" (Ngen.exe) in den systemeigenen Abbildcache des lokalen Computers
installiert wird.

[Interning von Zeichenfolgen]
Interning bedeutet, dass die Common Language Runtime in einer
Anwendungsdomàne für jedes eindeutige Zeichenfolgenliteral *ein*
Zeichenfolgenobjekt erstellt, anstatt mehrere Kopien.
Die Common Language Runtime verwaltet automatisch eine Tabelle, den so
genannten "Internpool", der eine einzige Instanz jedes im Programm
deklarierten eindeutigen konstanten Zeichenfolgenliterals enthàlt, sowie
jede eindeutige im Programm hinzugefügte Instanz von String. Der Internpool
erhàlt den Speicherplatz von Zeichenfolgen. Wenn Du ein konstantes
Zeichenfolgenliteral mehreren Variablen zuweist, verweisen die Variablen
nicht auf unterschiedliche Instanzen von String mit identischem Wert,
sondern jede Variable verweist auf dieselbe Konstante innerhalb des
Internpools.
Interning von Zeichenfolgen erfordert das Erstellen erweiterter Tabellen,
die Arbeitsspeicherressourcen verwenden.

[String.Intern-Methode]
http://msdn2.microsoft.com/de-de/li...ing.intern(VS.80).aspx
(Achtung, teilweise ist die Online-Doku nicht aktuell,
ggf. Juni MSDN Library installieren, s.u.)

[String.IsInterned-Methode]
http://msdn2.microsoft.com/de-de/li...isinterned(VS.80).aspx

[CompilationRelaxations-Enumeration]
http://msdn2.microsoft.com/de-de/li...elaxations(VS.80).aspx

Als Beispiel, bei folgendem Code:

string s = "Bob"; string t = "Bob";

würde normal nur *ein* Objekt "Bob" im Speicher sein,
wenn nicht im NIC mit NoStringInterning.

[MSDN Library (Juni 2007 Edition) – Enthàlt die Dokumentation zu Visual®
Studio 2005 Service Pack 1.]
http://www.microsoft.com/downloads/...x?FamilyID¸704100-0127-4d88-9b5d-896b9b388313&DisplayLang=de


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen