AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mehrdimensionale Variable variabler Dimension
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrdimensionale Variable variabler Dimension

Ein Thema von Whookie · begonnen am 9. Okt 2014 · letzter Beitrag vom 12. Okt 2014
 
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
454 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Mehrdimensionale Variable variabler Dimension

  Alt 11. Okt 2014, 12:00
Die Klasse sieht nun wie folgt aus:

Delphi-Quellcode:
TVariable<T> = Class
  private type
    PVariable = ^T;
  private
    fVarSize: Integer;
    fDimensions: TDimArray;
    fPData: PByte;
    fMemSize: Integer;
  public
    constructor Create(AName: AnsiString; const ADimensions: TDimArray); virtual;

    property Value_: T read GetValue write SetValue;
    property Value[x: Integer]: T read GetValue1D write SetValue1D; default;
    property Value[x,y: Integer]: T read GetValue2D write SetValue2D; default;
    property Value[x, y, z: Integer]: T read GetValue3D write SetValue3D; default;
  End;
Bis auf die Value_ property sieht das schon recht gut aus.

Zeitmessungen habe ich auch gemacht jeweils 800000 Zugriffe auf ein 10*3 Integer Array

Version mit Value[[x,y]] : ~2400ms
Version mit Value[x,y] : ~180ms

Zusätzlich habe ich auch das mit einem TDictionary ausprobiert:
Mit IntToStr(x)+'-'+IntToStr(y): ~9200ms
Mit (x Shl 16 + y) als Index: ~3400ms


Ein Problem bleibt noch mit der Unterscheidung zwischen:
Delphi-Quellcode:
Type
  TEnumEntry = AnsiString;
und "normalen" AnsiStrings. Beides soll als Array angelegt werden können, intern aber anders gehandhabt werden. AnsiStrings sind in Wirklichkeit Strings mit fixer Länge und können direkt abgelegt werden während TEnumEntry Strings mit varibler Länge sind und im Speicher einfach als Offsets auf ihre Position dahinter abgelegt werden sollen.

Leider ist aber TypeOf(T) = TypeOf(TEnumEntry) = TypeOf(AnsiString). Daher suche ich nun eine Möglichkeiten die beiden Varianten zu unterscheiden?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 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