Kurze Frage zu Pointern
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Kurze Frage zu Pointern
*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?
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
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.
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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kurze Frage zu Pointern
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.
14 Tagen nicht mehr verstehen.
Schreib Dein Programm normal, sicher und leserlich, optimieren kannste später noch, wenn es hakt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Kurze Frage zu Pointern
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?
@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
Bei Mehrdimensionalen Arrays ist es u.u. schneller ein Feld in einem Pointer zu speichern und mit diesme dann rechnungen durchzuführen:
Das spart das mehrlaliere ausrechnen des Feldes ...
Oder bei Maps:
Auch hier wird das ermitteln des Hashs nur mal mal benötigt satt 3 ...
Beispiele mache nur in wirklich komplexen Rechnungen sinn!
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)
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)
Beispiele mache nur in wirklich komplexen Rechnungen sinn!
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Kurze Frage zu Pointern
Klingt nachvollziehbar dass das schneller gehen kann...
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kurze Frage zu Pointern
Naja, wenn diese ms wirklich was ausmachen? Kommt immer drauf an, wieviel, wieoft usw.SebastianJu2 hat geschrieben:Klingt nachvollziehbar dass das schneller gehen kann...
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

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Kurze Frage zu Pointern
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.
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.
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Kurze Frage zu Pointern
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?
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?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kurze Frage zu Pointern
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?
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?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
