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

Allgemeine Diskussionen
Re: Warum Speicherbedarf für boolean 2 bytes  
Autor: Mahobi
Datum: 09.07.04 19:11

Hi,

Hier nochmal ne optimierte Version.
Hier die Daten:

200 000 Primzahlen:
Letze Version: 40ms
Optimiert: 30ms

2 Mio Primzahlen:
Letzte Version: 411ms
Optimiert: 270ms

20 Mio Primzahlen:
Letzte Version: 6,2s
Optimiert: 4,3s

200 Mio Primzahlen:
Letzte Version: 67s, knapp 29MB
Optimiert: 51s, ca. 16MB

Werte sind wieder von ner kompilierten exe auf nem AthlonXP 2100 mit 1GB RAM.

Man sieht, man kann immer noch ein bisschen mehr aus dem Algorithmus rausholen rausholen.
Hier hab ich den Step mit der Primzahl 2 ganz rausgelassen. Die Zahlen im Array sind jetzt nicht mehr 1,2,3,4,5,... sondern repräsentieren 1,3,5,7,9,...
Somit spart man sich nochmal die Hälfte an Speicher und den ersten Schritt, welcher bei der Berechnung auf der Zeitaufwändigste ist, da der mit den meisten Loops.

Hier der Code:
Private Sub GetPrimOptimiert()
Dim i As Long, lBisZahl As Long
Dim lCurrentPrim As Long
Dim lEndeZahl As Long
Dim lStart As Long, lEnde As Long
Dim sOut As String
Dim bitPrim As clsBitArray
Dim lS As Long, lE As Long
Dim lStep As Long
Dim lTemp As Long, lTemp2 As Long
 
 
Set bitPrim = New clsBitArray
 
 
  lBisZahl = Text1.Text - 1
 
  lStart = GetTickCount
 
  ' Array dimensionieren
  lTemp = CLng(lBisZahl / 2)
  If lBisZahl Mod 2 = 1 Then lTemp = lTemp + 1
  bitPrim.Bits = lTemp
 
 
  lEndeZahl = (lBisZahl + 1) / 2
  For lCurrentPrim = 3 To lEndeZahl Step 2
 
    If bitPrim.Bit(GetIndex(lCurrentPrim)) = False Then
      lStep = lCurrentPrim
      lTemp = lBisZahl / 2
      lTemp2 = GetIndex(lCurrentPrim)
 
      For i = lTemp2 + lStep To lTemp Step lStep
        bitPrim.Bit(i) = True
      Next i
 
    End If
 
  Next lCurrentPrim
 
  lEnde = GetTickCount
  sOut = "Dauer der Berechnung: " & lEnde - lStart & "ms" & vbCrLf
 
  MsgBox sOut
End Sub
 
Private Function GetIndex(Zahl As Long) As Long
  GetIndex = Zahl \ 2 + 1
 
End Function
Beim Auswerten des Arrays muss man jetzt aufpassen, das die Abfolge der Zahlen im Array mit 1 beginnen und immer eine auslassen.
So, jetzt ist erstmal Schluss

Gruß
Mahobi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Warum Speicherbedarf für boolean 2 bytes 1.772hobby_programmer03.07.04 23:34
Re: Warum Speicherbedarf für boolean 2 bytes 1.237JennyB04.07.04 09:07
Re: Warum Speicherbedarf für boolean 2 bytes 1.214hobby_programmer04.07.04 18:15
Re: Warum Speicherbedarf für boolean 2 bytes 1.389E704.07.04 18:18
Re: Warum Speicherbedarf für boolean 2 bytes 1.219LonelySuicide66604.07.04 21:59
Re: Warum Speicherbedarf für boolean 2 bytes 1.148hobby_programmer04.07.04 22:01
Re: Warum Speicherbedarf für boolean 2 bytes 1.173E705.07.04 18:36
Re: Warum Speicherbedarf für boolean 2 bytes 1.073LonelySuicide66606.07.04 17:02
Re: Warum Speicherbedarf für boolean 2 bytes 1.571ModeratorMartoeng05.07.04 19:43
Re: Warum Speicherbedarf für boolean 2 bytes 1.146E705.07.04 20:31
Re: Warum Speicherbedarf für boolean 2 bytes 1.151ModeratorMartoeng05.07.04 21:03
Re: Warum Speicherbedarf für boolean 2 bytes 1.161Snof06.07.04 00:03
Re: Warum Speicherbedarf für boolean 2 bytes 1.141ModeratorMartoeng06.07.04 09:49
Was ich mir vorstellen könnte...1.129ModeratorMartoeng05.07.04 19:51
Re: Was ich mir vorstellen könnte...1.043hobby_programmer06.07.04 15:39
Re: Was ich mir vorstellen könnte...1.055LonelySuicide66606.07.04 17:05
Re: Was ich mir vorstellen könnte...1.147E706.07.04 19:22
Re: Was ich mir vorstellen könnte...1.048LonelySuicide66606.07.04 21:12
Re: Warum Speicherbedarf für boolean 2 bytes 1.185Mr. Fox07.07.04 09:11
Re: Warum Speicherbedarf für boolean 2 bytes 1.081Mahobi08.07.04 11:24
Re: Warum Speicherbedarf für boolean 2 bytes 1.045hobby_programmer08.07.04 13:25
Re: Warum Speicherbedarf für boolean 2 bytes 1.150Mahobi08.07.04 14:11
Re: Warum Speicherbedarf für boolean 2 bytes 1.000hobby_programmer08.07.04 17:50
Re: Warum Speicherbedarf für boolean 2 bytes 989Mahobi09.07.04 08:53
Re: Warum Speicherbedarf für boolean 2 bytes 1.016ModeratorMartoeng09.07.04 09:34
Re: Warum Speicherbedarf für boolean 2 bytes 974Mahobi09.07.04 12:21
Re: Warum Speicherbedarf für boolean 2 bytes 984Mr. Fox08.07.04 20:34
Re: Warum Speicherbedarf für boolean 2 bytes 1.122Mahobi09.07.04 12:47
Re: Warum Speicherbedarf für boolean 2 bytes 1.145Mahobi09.07.04 18:15
Re: Warum Speicherbedarf für boolean 2 bytes 1.052Mahobi09.07.04 19:11
Re: Warum Speicherbedarf für boolean 2 bytes 1.071hobby_programmer09.07.04 22:37
Meine Zahlen1.052Snof10.07.04 01:53
groooßer Fehler.1.053Snof10.07.04 03:07
Re: Warum Speicherbedarf für boolean 2 bytes 1.031Mahobi10.07.04 00:47
Re: Warum Speicherbedarf für boolean 2 bytes 977hobby_programmer10.07.04 13:11
Re: Warum Speicherbedarf für boolean 2 bytes 1.018E710.07.04 14:57

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