vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Option Strict 
Autor: ModeratorDaveS (Moderator)
Datum: 24.01.06 09:39

Also, ich bin schon sicher. Man sollte bedenken, dass es nicht nur darum geht den Laufzeittyp festzustellen, sondern darum, dass ohne Cast, der VB Compiler gar keinen richtigen Code generieren kann, und dafür sorgen muss, dass Methoden zur Laufzeit mittels Reflection aufgerufen werden. Das ist Größenordnungen langsamer als Code wo der Typ schon bekannt ist.
    Private Class c
        Public i As Long
        Public Sub doit()
            i = i + 1
        End Sub
    End Class
 
    Public Sub tc()
        Dim i As Integer
        Dim c1 As Object = New c
 
        Dim st As Long = Environment.TickCount
        For i = 1 To 100000
            c1.doit()
        Next
        Dim ct As Long = Environment.TickCount - st
 
        Dim st1 As Long = Environment.TickCount
        For i = 1 To 5000000
            CType(c1, c).doit()
        Next
        Dim ct1 As Long = Environment.TickCount - st1
 
        Debug.WriteLine(ct.ToString() & " / " & ct1.ToString())
    End Sub
Der Code in der ersten Schleife, der nur 100.000 Mal durchläuft dauert ca 1.734 Millisekunden, die zweite Schleife, die 5.000.000 Mal durchläuft ist in ca 90 Millisekunden fertig.

Aber warum ist es überhaupt notwendig? Meistens weil man Collection-Klassen wie ArrayList direkt verwenden will. Wenn man aber die .Net Klassenbibliotheken anschaut merkt man wenig Stellen wo man casten muss, obwohl bestimmt hinter vielen Collections ArrayLists, Hastables usw stecken. Warum ist das so? Weil .Net Typ-spezifische Collections hat. Ein ListView hat ein ListViewItemsCollection. Eine DataTable hat ein DataRowsCollection, usw. Nur in Fällen (wie ListBox.Items) wo beliebige Objekte aufgenommen werden muss man mit reinen Objekten umgehen. Es ist natürlich etwas mehr Arbeit solche Collections zu schreiben, aber das nenne ich eher einen sauberen Stil. Typsicherheit besteht wenn man nur die richtigen Objekte in einer Collection haben kann, nicht weil man ein Cast benutzen muss weil man eben nicht verhindert hat, dass fremdartige Objekte hineingelangen können.

Allerdings mit FW 2.0 gehört das alles hoffentlich bald der Vergangenheit an, weil man dann sehr einfach solche Collections benutzen kann. Mit
        Dim col As New System.Collections.ObjectModel.Collection(Of c)
        col.Add(New c)
 
        Dim st2 As Long = Environment.TickCount
        For i = 1 To 5000000
            col(0).doit()
        Next
        Dim ct2 As Long = Environment.TickCount - st2
ist die Schleife in ca 110 Millisekunden durch (aber hier holen wir den Wert jedesmal aus der Collection).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit später Bindung1.421David M23.01.06 11:46
Re: Problem mit später Bindung1.081ModeratorDaveS23.01.06 11:53
Re: Problem mit später Bindung960David M23.01.06 12:00
Re: Problem mit später Bindung968ModeratorDaveS23.01.06 12:14
Re: Problem mit später Bindung945David M23.01.06 13:05
Re: Problem mit später Bindung973ModeratorDaveS23.01.06 13:10
Re: Problem mit später Bindung963David M23.01.06 13:28
Re: Problem mit später Bindung1.012ModeratorFZelle23.01.06 15:00
Re: Problem mit später Bindung949David M26.01.06 13:20
Re: Problem mit später Bindung953ModeratorDaveS26.01.06 13:40
Re: Problem mit später Bindung972ModeratorFZelle26.01.06 13:51
Re: Problem mit später Bindung1.068Micke23.01.06 17:13
Option Strict987Drapondur23.01.06 22:33
Re: Option Strict947ModeratorDaveS24.01.06 09:39
Re: Option Strict976Drapondur24.01.06 23:02
Re: Problem mit später Bindung1.028David M26.01.06 13:42
Re: Problem mit später Bindung948David M26.01.06 14:05
Re: Problem mit später Bindung 1.057ModeratorDaveS26.01.06 14:14
Re: Problem mit später Bindung999David M26.01.06 14:37
Re: Problem mit später Bindung922ModeratorDaveS26.01.06 14:44
Re: Problem mit später Bindung971ModeratorFZelle26.01.06 14:47
Re: Problem mit später Bindung984David M26.01.06 15:00
Re: Problem mit später Bindung945ModeratorDaveS26.01.06 15:15

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel