Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Problem in Pascal!

  Alt 3. Feb 2004, 08:06
Hallo Neg,

so elegant der Weg mit dem Mengen-Konstrukt auch scheint, so wenig lässt sich in der von Delphi vorgenommenen Implementierung die Deklaration
Delphi-Quellcode:
var
  SchonVerwendet: Set of integer;
compilieren.

Hintergrund: Bei einem Set wird für jedes mögliche Element genau ein Bit gehalten, so dass bei einem set of Byte insgesamt 256 Bits abgelegt werden müssen. Im gegensatz zu ausgerichteten Feldern wir einem Array oder einem Record setzt der Delphi-Compilier die Struktur jedoch gepackt um, so dass für jeweils 8 Bits genau ein Byte verwendet werden kann, die Gesamtstrukur belegt daher für n mögliche Elemente den Speicherplatz
Code:
s = (n+7) div 8
(das +7, um gauß'sche Klammern zu sparen) oder in mit dem Exponenten q zur Basis 2 ausgedrückt mit
Code:
q = ln2(n)
gilt daher
Code:
s=2^(ln2(n)-3)
Das bedeutete für den Speicherverbrauch s eines set of Integer mit q=32 folglich
Code:
s = 2^29 = 536870912
was also in dem Platzverbrauch von 512MB auf dem Stack entspräche...
gruß, choose
  Mit Zitat antworten Zitat