SO WIRD'S GEMACHT: Verbessern der Leistung

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Die folgenden Programmiertechniken können Arbeitsspeicher gespeichert und Verbessern der Leistung für Anwendungen für Geräte.

So sparen Sie Arbeitsspeicher mit Windows Forms und Grafiken

Speicher mit Daten und Zeichenfolgen speichern

  • Int32 -Schleifen anstelle von Objektvariablen ganzzahlige Variablen ( Int64oder for) verwenden.

  • Verwenden Sie die ToString Methode eine Enumeration aufgrund der Leistungseinbußen, die es durch Durchsuchen Metadatentabellen geht.

  • OutOfMemoryException Fehler zu vermeiden. Diese Ausnahme kann von der common Language Runtime ausgelöst werden, wenn nicht genügend Speicherplatz zum Reservieren für interne Zwecke oder neue Objektinstanzen vorhanden ist. Um diese Ausnahme zu vermeiden, sollten Sie keine umfangreiche Methoden, die 64 KB oder mehr RAM beanspruchen, Programmieren.

  • Entfernen Sie die Datei System.SR.dll, Fehlermeldung-Zeichenfolgen für Dialogfelder Ausnahme enthält. Sie können die Anwendung ohne diese Datei so sparen Sie Arbeitsspeicher bereitstellen. .NET Compact Framework lädt dynamisch Fehlerzeichenfolgen in Datei System.SR.dll enthalten, wenn die Datei vorhanden ist.

    Wenn diese DLL-Datei nicht auf dem Gerät vorhanden ist, enthalten alle Ausnahmen die Meldung "Ressourcenassembly kann nicht geladen werden." Während der Entwicklung ist es jedoch sinnvoll Visual Studio Projekt einen Verweis auf Datei System.SR.dll hinzufügen, damit aussagekräftige Ausnahmen angezeigt werden wird.

  • Zeichenfolgen sind unveränderlich, sodass ein neues String-Objekt erstellt wird, bei jedem ändern die Zeichenfolge. Sollten Sie ein StringBuilder verwenden, wenn Sie eine Zeichenfolge erstellen, die häufig geändert werden.

  • Verwenden Sie die ParseExact -Methode für ein DateTime , wenn Sie das genaue für DateTime Serialisierung verwendete Format kennen. Andernfalls versucht der Parser DateTime sequenziell, mehrere kulturspezifische Formate anwenden.

  • Beschränken der Anzahl der geöffneten SqlCeCommand Objekte und Dispose davon Beendigung.

Speicherplatz einsparen, wenn die Interoperabilität mit systemeigenem code

  • Rufen Sie in Plattform Operationen auf, verwenden Sie blitfähige Typen, die eine gemeinsame Darstellung im verwalteten und nicht verwalteten Speicher, z. B. Int32 oder IntPtr. Blitfähige Werttypen, die größer sind als 32 Bits sind schneller als Verweis als Wert übergeben. Weitere Informationen über blitfähige Typen finden Sie unter .NET compact Framework blitfähige Datentypen.

  • Verwenden Sie die InAttributeOutAttribute Attribute und für die Argumente in der Funktionssignatur, um unnötige Marshalling zu reduzieren.

  • Verwenden Sie die Methoden in der Marshal -Klasse, um manuell zwischen IntPtr und verwalteten Objekten wie z. B. PtrToStructure, PtrToStringBSTR, GetObjectForNativeVariantund GetObjectForIUnknown zu konvertieren.

  • Verwenden Sie die Prelink und PrelinkAll Methoden, um JIT-Kompilierung des Stubs zu verursachen, die systemeigenen verwaltete Aufrufe unterstützt.

  • Wenn das systemeigene COM-Objekt S_FALSE als allgemeinen Fall oder andere nicht S_OK-HRESULT-Werte zurückgeben erwarten, legen Sie das Feld PreserveSig auf true und der verwalteten Signatur der systemeigene Signatur überein. Dies vermeidet den Overhead von einer try/catch Block, der erforderlich ist, wenn die Common Language Runtime HRESULT übersetzt Werte, um Ausnahmen auf die COM-Aufrufe.

  • Tun Sie so viel Arbeit wie Sie in einer Plattform Aufruf, anstatt mehrere Aufrufe aufrufen können.

In Auflistungen Speicher speichern

  • Verwenden Sie Indexer, wenn die Auflistung ein Array basiert.

  • Wann immer dies möglich ist, geben Sie die Größe der Auflistung, da dynamische Größenänderungen überschüssigen Speicher beträchtlich erhöhen kann.

  • Verwenden Sie generische Auflistungen, um das Boxing und unboxing Aufwand für Werttypen zu vermeiden. Die beste Leistung definieren optimierte Auflistung Ergebnisse.

Arbeitsspeicher in XML speichern

  • Verwenden Sie XmlTextReader und XmlTextWriter anstelle von XmlDocument, die mehr Speicher verwendet.

  • Geben Sie Einstellungen für XmlReaderSettings und XmlWriterSettings, um die Leistung zu verbessern. Die IgnoreWhitespace und IgnoreComments Eigenschaftswerte, können ggf. Leistung erheblich verbessern.

  • Verwendet UTF-8, ASCII- und UTF-16-Codierungen, die schneller als ANSI und Windows-Codepage-Codierungen sind Zeichen.

  • Vermeiden Sie die ein Schema für die Analyse, Verwendung da zusätzliche Überprüfung Arbeit erforderlich ist.

  • Ordnen Sie Spalten als Attribute und verwenden Sie eine typisierte DataSet , wenn ein DataSet aus einer XML-Quelle füllen.

  • Vermeiden Sie die folgenden beim Auffüllen einer DataSet:

    • Schemaherleitung.

    • Geschachtelte Tabellen.

    • DateTime in verschiedenen Spalten. Verwenden Sie für eine bessere Leistung stattdessen den Eigenschaftenwert Ticks.

  • Die folgenden Richtlinien Leistungssteigerung bei Verwendung von XML-Deserialisierung:

    • Behalten Sie Element- und Attributnamen Namen so kurz wie möglich, da jedes Zeichen überprüft werden muss.

    • XML-basierend auf schneller basierend auf Elementdaten XML Daten-Attribut.

    • Verwenden Sie gegebenenfalls die XmlNodeReader.Skip-Methode.

    • Berücksichtigen Sie die binären Serialisierung, bei der Leistung kritisch wird.

  • Verwendet eine XmlSerializer Instanz pro Typ für XML-Serialisierung verringern Sie den Zeitraum aufgewendet Metadaten gesucht.

  • Da große Mengen an XML-Serialisierung Speicherplatz verwenden kann, sollten Sie Sie erstellen einen benutzerdefinierten binären Serialisierungsmechanismus stattdessen mithilfe eines BinaryReader und BinaryWriter.

Speicherplatz einsparen, wenn Sie einen Webdienst verwenden

  • Verwenden Sie ein DiffGram beim Lesen und schreiben ein DataSet. Weitere Informationen finden Sie unter DiffGrams (ADO.NET).

  • Speichern Sie eine remote DataSet und dessen Schema mit dem Gerät als XML.

  • Stellen Sie eine einfache Webdienstmethode während den Begrüßungsbildschirm aufrufen, da der erste Aufruf langsamer ist als nachfolgende Aufrufe.

  • Achten Sie Netzwerk und Daten Fehler zu behandeln.

  • In einigen Fällen serialisieren manuell DataSet als XML-Zeichenfolge vor dem einen Web Service-Aufruf eine bessere Leistung führt.

So sparen Sie Arbeitsspeicher in Erweiterte Programmierung

  • Verarbeiten Sie umfangreiche Vorgänge asynchron.

  • Vermeiden Sie virtuelle Aufrufe. .NET Compact Framework Runtime virtuelle Aufrufe sind ungefähr 30 Prozent langsamer als statisch oder Instanz aufrufen. .NET Compact Framework verwendet Vtables nicht wegen eingeschränkte Ressourcen so Methoden aufgerufen werden müssen, indem die Klasse und Schnittstelle Hierarchie von, die ein aufwändiger Vorgang ist. .NET Compact Framework verwaltet einen Cache aufgelöst virtuelle Aufrufe, in den meisten Fällen Aufrufe müssen also nicht zu reinterpreted werden.

  • Verwenden Sie nach Möglichkeit Felder anstelle von Eigenschaften.

  • Überschreiben Sie die GetHashCodeEquals Methoden und, wenn einen Werttyp definieren. Wenn Sie nicht überschrieben werden, verwendet die Laufzeit verallgemeinerte Versionen für diese Methoden in der Klasse base ValueType.

  • Verwenden Sie Reflektion mit Vorsicht. Mithilfe von Reflektion untersuchen Gründen mit un-instantiated Klassen kann die Leistung der instanziierten Objekte in Ihrer Anwendung auswirken.

  • Sicherstellen Sie, dass die verwalteten Ressourcen vollqualifizierte Typnamen haben und sind genau in der RESX-Datei. Sie müssen die richtige Version und PublicKeyToken-Felder verfügen. Der Aufwand nach am besten geeigneten Ersatz für einen nicht ordnungsgemäß angegebenen Typ beeinträchtigt die Leistung.

  • Beachten Sie, dass in einigen Fällen beim Lesen der Anwendung Daten direkt aus der Datei ausreichend und effizienter als die Verwendung von ResourceManager möglicherweise. Ein ResourceManager kann mehreren Standorten testen, im Dateisystem um eine optimale Satellitenassembly entsprechen, bevor er die binäre Ressource ermittelt zu suchen. Verwenden Sie geeignete Tools für die Auftrag.

Siehe auch

Konzepte

Gerät Speicherverwaltung in .NET Compact Framework

.NET compact Framework Gewusst-wie-Themen

Weitere Ressourcen

Leistung und Diagnose in .NET Compact Framework