Seite 1 von 2
Kurze Frage zu Pointern
Verfasst: 06.03.2011 17:52
von SebastianJu2
*s = @s$
Gibt es einen Nachteil wenn man, wo möglich, nur @s$ als Pointer benutzt anstatt einer echten Pointervariablen?
Ein Vorteil könnte sein dass, je nach Programmaufbau, eine Variablenzuweisung weniger erfolgt. Könnte zB relevant sein wenn die Zuweisung in einer Schleife erfolgt also sehr oft passieren würde.
Und von der Geschwindigkeit scheinen auch beide Versionen gleich schnell zu sein.
Edit: Die Beispiele wo es um Geschwindigkeit durch Nutzung von Pointern ging bezogen sich alle auf Stringoperationen. Gibt es auch Optimierungsmöglichkeiten durch Pointer bei anderen Datentypen?
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 17:59
von STARGÅTE
Nein es gibt kein Nachteil ... zumindest nicht, wenn du es wirklich nur als Pointer nutzt
Vorteil ist sogar, das du mit @s$ immer den richtigen Pointer bekommst.
Wenn du einmal
*s = @s$
machst, sich dann aber der Inhalt von s$ ändert, kann sich auch deren Pointer ändern, sein *s hätte aber noch den alten Wert.
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:00
von ts-soft
Viel wichtiger ist doch die Lesbarkeit, mit Variablen als s$ oder *s wirste den Code in spätestens
14 Tagen nicht mehr verstehen.
Schreib Dein Programm normal, sicher und leserlich, optimieren kannste später noch, wenn es hakt.
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:06
von SebastianJu2
s$ war auch nur ein Beispiel. Normal nehme ich sprechende Variablen.
@Stargate
Dankefunktion funktioniert...
Ich habe noch ein Frage zur Geschwindigkeitsoptimierung mit Pointern. Die Beispiele die ich dazu gesehen habe bezogen sich alle auf Strings, was ja auch Sinn macht da an Strings und deren Zeichen ansonsten schwierig ranzukommen ist.
Gibt es für die anderen Datentypen auch Optimierungspotential durch Pointer? Wenn ja wo zB?
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:20
von STARGÅTE
Bei Mehrdimensionalen Arrays ist es u.u. schneller ein Feld in einem Pointer zu speichern und mit diesme dann rechnungen durchzuführen:
Code: Alles auswählen
; Statt:
Raum.i(a,b,c) = Raum.i(a,b,c) + Sqr(Raum.i(a,b,c))
; Lieber:
*Raum.Integer = @Raum(1,2,3)
*Raum\i = *Raum\i + Srq(*Raum\i)
Das spart das mehrlaliere ausrechnen des Feldes ...
Oder bei Maps:
Code: Alles auswählen
; Statt:
Raum.i("LaberLaber") = Raum.i("LaberLaber") + Sqr(Raum.i("LaberLaber"))
; Lieber:
*Raum.Integer = @Raum(("LaberLaber")
*Raum\i = *Raum\i + Srq(*Raum\i)
Auch hier wird das ermitteln des Hashs nur mal mal benötigt satt 3 ...
Beispiele mache nur in wirklich komplexen Rechnungen sinn!
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:25
von SebastianJu2
Klingt nachvollziehbar dass das schneller gehen kann...
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:32
von ts-soft
SebastianJu2 hat geschrieben:Klingt nachvollziehbar dass das schneller gehen kann...
Naja, wenn diese ms wirklich was ausmachen? Kommt immer drauf an, wieviel, wieoft usw.
Ausserdem ist PB eine strukturierte Procedurale Sprache und in diesem Sinne sind
Pointer zu vermeiden.
Konzentriere Dich lieber auf einen logischen und sicheren Programm-Aufbau. Deine Pointer-
versuche werden Dich vom richtigem Programmieren nur abhalten. Es gibt wirklich nicht
sehr viele Situationen, wo eine Optimierung durch Pointer sinnvoll ist, wo man das bei
der Nutzung des Programmes bemerkt und nicht nur der Computer es messen kann.
Wenn Du die ersten 10 funktionierenden Programme im Showcase vorgestellt hast, dann
kannst Du Dir über das Pointern gedanken machen

Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 18:49
von SebastianJu2
Also aktuell geht es mir um eine Aufgabe bei der ein Text aus einem EditorGadget erstmal in eine Liste übertragen werden soll.
Ich habe also in einem Formularfeld oben Text mitsamt Zeilenumbruch und muss als erstes die Daten zeilenweise in Listenfeldern speichern. Und da dachte ich das wäre eine Möglichkeit mich an Pointern zu versuchen. Denn ich vermute wenn man erstmal damit umgehen kann wird es auch nicht viel länger dauern es zu coden als wenn man sich mit PB-Funktionen etwas zusammenbaut.
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 19:11
von SebastianJu2
Ich habe noch eine Frage zur Definition von Datentypen. Manchmal in den Beispielcodes hier im Forum wird für die Definition nicht das Kürzel zB .c benutzt sondern eine lange Form zB .Character. Ich habe speziell dazu nichts in der Hilfe gefunden aber mir ist aufgefallen dass es einen Unterschied macht.
Ein *Char\c erzeugt die Fehlermeldung "Variable hat eine Structure" wenn *Char als *Char.c definiert wurde. Aber es kommt keine Fehlermeldung mehr wenn stattdessen *Char.Character benutzt wurde.
Wie kommt das?
Re: Kurze Frage zu Pointern
Verfasst: 06.03.2011 19:13
von ts-soft
Beim Text aus EditorGadget in eine Linklist, wirste mit Pointern aber nichts gewinnen.
Das musst Du mir aber mal vorführen
Aber wenn Du unbedingt meinst, Du müsstest dies tun, soll es mir jetzt auch egal sein,
ich hab jetzt alles gesagt, was es zu sagen gab.
Nachtrag:
Diese Strukturen zu kennen und zu verstehen ist aber Grundvorraussetzung, haste das Tutorial
auf PureArea bereits gelesen?