DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Performance Optimierung unter VB .NET

Vielleicht habe Sie einen 10 GHZ Prozessor mit dem neuen Startreck Bussystem und Sie machen sich Gedanken wie Sie Ihr System noch schneller machen können. Ich kann Ihnen sagen, "Software" ist ein gutes Stichwort.

Über Jahre haben wir gelernt, wie man Programme unter Performance Aspekten schreiben soll und was die großen NONO's sind. Jetzt brauchen wir 120 % unseres Gehirnes um dieses VB .NET zu lernen, da bleibt für andere Sachen einfach kein Platz.

 

Also nehmen Sie sich trotzdem nun einige Minuten Zeit und lesen Sie Tipps & Fehler die Sie besser vermeiden sollten mit VB .NET.

 

Stringoperationen

Häufig müssen Sie Code schreiben, der über 10 oder mehr Zeilen Strings zusammenfügt um z.B. komplexere SQL Kommandos zu bauen. Der gute alte Weg über eine Variable an die immer wieder eine Zeichenkette angehängt wird, kann in VB .NET nachteilig sein. Es gibt eine Stringbuilder Klasse die hier zum Einsatz kommen sollte. Der Grund liegt in der Garbage Collection die immer eine Kopie pro Zuweisung der Stringvariablen anfertigt. Bei bis ca 10 Stringadditionen können Sie den alten Weg wählen. Darüber hinaus liefert der Stringbuilder wesentlich bessere Performance.

 

DIM  MyASP AS new System.Text.StringBuilder("<HTML>")

for I= 1 to 1000

        myASP.Append("<br>")

next i

myASP.Append("</HTML>")

 

Dies gilt natürlich auch für alle anderen .NET Sprachen, da der Stringbuilder ein Bestandteil der Base Class Library ist.

 

Vollkompilierung von Exen

Zwar springt der JIT automatisch an, wenn eine Exe im IL Format angefordert wird. Dies benötigt aber natürlich ein bisschen Zeit nach jedem Systemstart. Über das Tool ngen.exe lässt sich die Arbeit des JIT vorwegnehmen. Am besten ruft man ngen unmittelbar nach Installation auf. Man könnte ngen auch schon vorher ausführen, also in das Paket die vollkompilierten Codes legen. Dies hätte aber den Nachteil, das die Software nicht auf das jeweilige System optimiert werden kann und somit langsamer ist (siehe Betreff des Artikels)

 

Verwenden Sie Try/Catch

Auch wenn sich Goto in den Herzen der VB Programmierer festgesetzt hat ( im Hirn kann'

s nicht sein), fahren Sie besser, wenn Sie darauf verzichten. VB .NET hat den Befehl eigentlich abgeschafft, aber in der Error Behandlung die aus Kompatibilitätsgründen die gleiche wie in VB ist, findet sich weiter ein Goto

On Error Goto

Nicht nur, das Goto unschön ist, es ist auch langsamer als die neue Methode mit Try/Catch. Seien Sie aber auch mit Try/Catch sparsam und setzen Sie Fehlerbehandlung nur dort ein wo es unbedingt sein muss. Manchmal läßt sich an anderer Stelle , z.B. bei Benutzereingaben eine viel sinnvollere Fehlerbehandlung durch Überprüfung durchführen.

Try

    x = 1/0

  Catch

    Return

 End Try

 

Übrigens die Division durch 0 wirft keinen Exception!

 

Formatieren

Es gibt einige Möglichkeiten Variablen von einer Art in die andere zu Konvertieren. Wenn das Zielformat ein String ist, wird meist auch gleich eine Formatierung durchgeführt, wie z.B. ein Datum in ein bestimmtes Landesformat.

Es gibt zwar die Format Funktion die sehr mächtig ist. Die schnellere Methode ist aber die in allen Datentypen eingebaute Funktion ToString. Diese kann mit Parametern abhängig von Urdatentyp gesteuert werden.

Label1.Text = Date.Now.ToString("D")

 

Da diese Formatstrings weder intutiv noch logisch sind gibt es in der finalen Version des Frameworks gibt es auch Spezialfunktionen in den Datentypen, die den gleichen Job machen.

Label1.Text = Date.Now.ToLongDateString

 

Übergabe von Parametern

Die Übergabe an Funktionen oder Prozeduren von Werten erfolgt mit ByVal am schnellsten.

 

Addition

Eine Addition in der Form wert+=10 erspart dem JIT im Idealfall ein bisschen Arbeit.

 

Klassendesign

Bauen Sie Ihre Methoden Aufrufe mit Parametern anstatt mit Eigenschaften. Vermeiden Sie also fünf Attribute wie Farbe, Größe usw zu setzen, sondern bauen Sie diese als Parameter in den Funktionsaufruf ein. So wird der Kommunikationsbedarf zwischen Consumer und Provider weniger. Diese ist auch unbedingte Vorraussetzung bei der Verwendung von Webservices.

 

Componentenkommunikation

Auch wenn es sehr einfach ist einen Webservice zu schreiben, die Kommunikation über SOAP ist nicht Performance optimiert. Über Remoting und einen TCP/IP Channel lässt sich innerhalb des Firmennetzes wahrscheinlich effektiver arbeiten.

 

Verzicht auf Gimmicks

Was für Webservices schlecht ist, kann auch woanders nicht gut sein. Auch wenn es Hype oder Cool ist, nicht alles was möglich ist, ist nötig oder nützlich. SO verwenden Sie nur dort Security wo unbedingt nötig. Auch Transaktionen sollen nur dort eingesetzt werden, wo der Schwerpunkt auf der Ausführung liegt und nicht auf Performance.

 

Natürlich  gibt es an anderen Stellen wie bei ADO .NET noch einige Möglichkeiten, dazu aber später mehr. 

Natürlich lassen sich an anderen Stellen wie beim Datenbank Zugriff noch erhebliche Performance Gewinne erzielen. Auch viele Tricks speziell in Richtung subjektive Geschwindigkeit gelten weiter. So ist es immer nett den Benutzer mit wechselnden Dialogen und Meldungen zu versorgen, damit er sich nicht langweilt.

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 11.02.2002
  Gültig bis: 13.03.2002
31 Ratings
Bewertung: 65,2%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG