vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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 - Ein- und Umsteiger
Re: grosse Datenmengen schnell und effektiv serialisieren 
Autor: ErfinderDesRades
Datum: 27.02.14 23:21

hier mein Test:
Imports System.IO
Imports System.IO.Compression
 
Public Class frmBinaryReaderTester
 
   Dim file As String = Path.GetFullPath("..\..\Blabla.txt")
 
   Private Sub AnyMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) _
         Handles ReloadToolStripMenuItem.Click, SaveToolStripMenuItem.Click, _
         TestToolStripMenuItem.Click
      Dim uBound = 999999
      Dim sw = Stopwatch.StartNew
      Dim msg = "geschrieben"
      Select Case True
         Case sender Is ReloadToolStripMenuItem
            msg = "gelesen"
            Using strm = New FileStream(file, FileMode.Open), rd = New _
              BinaryReader(strm)
               DataItem.ResetCreation()
               Dim dti As DataItem = Nothing
               Try 'wir wissen ja nicht, wie lang der Film werden wird
                  For n = 0 To Integer.MaxValue
                     Dim dtiCompare = DataItem.CreateDataItem
                     dti = New DataItem
                     For i = 0 To dti.Singles.Length - 1
                        dti.Singles(i) = rd.ReadSingle
                        If dti.Singles(i) <> dtiCompare.Singles(i) Then _
                          Throw New Exception("Transmission-Errror detected")
                     Next
                     For i = 0 To dti.Bools.Length - 1
                        dti.Bools(i) = rd.ReadBoolean
                        If dti.Bools(i) <> dtiCompare.Bools(i) Then Throw _
                          New Exception("Transmission-Errror detected")
                     Next
                  Next
               Catch ex As EndOfStreamException
                  With New DataItem
                     If Not (dti.Singles.SequenceEqual(.Singles) AndAlso _
                       dti.Bools.SequenceEqual(.Bools)) Then Throw New _
                       Exception("Transmission-Errror detected")
                  End With
               End Try
            End Using
         Case sender Is SaveToolStripMenuItem
            Using strm = New FileStream(file, FileMode.Create), wr = New _
              BinaryWriter(strm)
               DataItem.ResetCreation()
               For n = 0 To uBound
                  Dim dti = DataItem.CreateDataItem
                  For Each sng In dti.Singles
                     wr.Write(sng)
                  Next
                  For Each bl In dti.Bools
                     wr.Write(bl)
                  Next
               Next
            End Using
         Case sender Is TestToolStripMenuItem
      End Select
      Console.WriteLine(String.Concat(sw.ElapsedMilliseconds, " ms ", msg))
   End Sub
 
   Public Class DataItem
      Private Shared Rnd As New Random(999)
      Public Shared Sub ResetCreation()
         Rnd = New Random(999)
      End Sub
      Public Shared Function CreateDataItem() As DataItem
         Dim retVal = New DataItem
         For i = 0 To 7
            retVal.Singles(i) = Rnd.Next / 100.0F
         Next
         For i = 0 To 9
            retVal.Bools(i) = CBool(Rnd.Next And 1)
         Next
         Return retVal
      End Function
      Public Singles(7) As Single, Bools(9) As Boolean
   End Class
 
End Class
Ausgabe:
2311 ms geschrieben
1859 ms gelesen

und es entsteht eine 40MB-Datei dabei.
GzipStream und BufferedStream haben leider nix gebracht

Erläuterung: DataItem ist eine Klasse mit 8 Singles und 10 Booleans
alles weitere müsste sich von selbst verstehen - wie man sieht gibts ein SaveToolStripMenuItem und ein ReloadToolStripMenuItem, und Reload ist bisserl komplizierter, weils parallel zum Lesen auch alle DataItem neu generiert, um auf Übertragungsfehler zu testen - es gibt keine

(Rechtschreibfehler urheberrechtlich geschützt)

Beitrag wurde zuletzt am 27.02.14 um 23:22:28 editiert.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
grosse Datenmengen schnell und effektiv serialisieren2.120Dot27.02.14 11:31
Re: grosse Datenmengen schnell und effektiv serialisieren1.481Manfred X27.02.14 11:42
Re: grosse Datenmengen schnell und effektiv serialisieren1.465Dot27.02.14 12:54
Re: grosse Datenmengen schnell und effektiv serialisieren1.455ModeratorFZelle27.02.14 13:04
Re: grosse Datenmengen schnell und effektiv serialisieren1.489Manfred X27.02.14 13:06
Re: grosse Datenmengen schnell und effektiv serialisieren1.402Dot27.02.14 13:18
Re: grosse Datenmengen schnell und effektiv serialisieren1.516Manfred X27.02.14 13:27
Re: grosse Datenmengen schnell und effektiv serialisieren1.486Dot27.02.14 15:52
Re: grosse Datenmengen schnell und effektiv serialisieren1.465ErfinderDesRades27.02.14 16:07
Re: grosse Datenmengen schnell und effektiv serialisieren1.433Manfred X27.02.14 16:24
Re: grosse Datenmengen schnell und effektiv serialisieren1.454Dot27.02.14 16:50
Re: grosse Datenmengen schnell und effektiv serialisieren1.417Manfred X27.02.14 17:17
Re: grosse Datenmengen schnell und effektiv serialisieren1.603Dot27.02.14 20:58
Re: grosse Datenmengen schnell und effektiv serialisieren1.512ErfinderDesRades27.02.14 23:21
Re: grosse Datenmengen schnell und effektiv serialisieren1.420Manfred X27.02.14 23:53
Re: grosse Datenmengen schnell und effektiv serialisieren1.409ErfinderDesRades28.02.14 07:51
Re: grosse Datenmengen schnell und effektiv serialisieren1.457Manfred X28.02.14 09:22

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