![]() |
Re: 100 milliarden Werte speichern!
Zitat:
Delphi-Quellcode:
type
TArr = array[1..10,1..10,1..1000] of extended ; var Arr : TArr ; procedure LoescheArr (Arr : TArr) ; begin FillChar (Arr,sizeof(Arr),0) ; end; |
Re: 100 milliarden Werte speichern!
Gib bei diesem Programm mal bitte sinvollere Startparameter an, da ich nicht weiß wo ich Nullen lassen kann und wo nicht, bei mir kommt pro Sekunde 4 mal (oder auch öfter) ne DivByZero Meldung :?
Flare |
Re: 100 milliarden Werte speichern!
Zitat:
|
Re: 100 milliarden Werte speichern!
Das ist auf LePtitmort bezogen...
Flare |
Re: 100 milliarden Werte speichern!
einfach auf günstige werte klicken!
|
Re: 100 milliarden Werte speichern!
Geht klar :thumb: Nur wenn ich dann nochmal auf "Berechnen und zeichnen" klicke, macht er kompletten Blödsinn ^^
Normalerweise müsste er ja das selbe Bild nochmal zeichnen, das ist aber nicht annähernd so! Und diese DivByZero-Meldungen kamen bei mir nach dem 3. oder 4. mal "Berechnen ..." klicken wieder. Flare |
Re: 100 milliarden Werte speichern!
Zitat:
Zitat:
Zitat:
Wenn du nur einen Wert (den letzten) benötigst, dann solltest du dir nur eine Variable anlegen und dort rein speichern. Damit sollten sich all deine Hauptspeicherprobleme lösen lassen. Zitat:
Würdest du die Zahlen so addieren, dass du jede der 1000 Zahlen nach einander zur 1 hinzu addierst, wäre dein Ergebnis = 1, würdest du die Zahlen hingegen aufsteigend summieren (immer die beiden kleinsten, bis du die Summe über alle 1000 hast), dann wäre dein Ergebnis sehr viel genauer z.B. 1,0273. Das Problem ist einfach, dass du dich bei der Gleitkommadarstellung auf die verwendeten Nach- und Vorkommastellen festlegen musst. Möchte wie gesagt nicht näher darauf eingehen, ist einfach so (findest du ganz schnell bei Google, wikipedia, ...) Was das Speichern deiner Werte angeht, so solltest du sie tunlichst nicht im Speicher lassen. Wie du sie wohin bannst ist eigentlich egal. Es gibt ein Menge Möglichkeiten, die einfachsten und sinnvollsten wären Datenbanken oder Streams (Beides hier schon angesprochen). Wenn du einen FileStream verwendest, so werden die Daten direkt auf die Festplatte geschrieben. Natürlich mögen 900 GByte etwas sehr groß sein, aber es gibt natürlich auch für Delphi einfache zip-Komponenten, die dürften schon einiges kleiner kriegen. Du solltest allerdings auch hier Versuchen die einzelnen Dateien nicht zu groß zu machen. Insbesondere wenn du nicht regelmässig auf die Daten zugreifst, solltest du dir überlegen ob du die Werte nicht in viele (sinnvolle) kleine Portionen packen kannst (z.B. wären 10^6 Werte mit 10 Byte kodiert etwas unter 10 MByte groß, dass lässt sich dann sicher auch schnell entpacken und zur Verwendung auch mal kurz im Speicher halten ohne das es Probleme gibt). Gruß Der Unwissende |
Re: 100 milliarden Werte speichern!
Ein kleiner Denkanstoss: Wenn die Berechnung nicht sehr lange dauert, wäre zu überlegen, ob man nicht nur die Werte speichert, die man zur Berechnung braucht. Siehe dazu auch:
![]() |
Re: 100 milliarden Werte speichern!
@Jelly
In der Prozedur LoescheArr löschst du leider nur die lokale Kopie des Arrays. Besser so:
Delphi-Quellcode:
@LePtitmort
procedure LoescheArr (var Arr: TArr); // <-- VAR-Parameter!
begin FillChar (Arr, SizeOf(Arr), 0) ; end; Bei der Verwendung einer PaintBox solltest du nur innerhalb der Methode OnPaint zeichnen. Siehe dazu auch ![]() Gruß Hawkeye |
Re: 100 milliarden Werte speichern!
Wowow. super Tipps tolle Ideen bereits dabei.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz