ich hab das mit dem Feldsymbolen wegen den Modifikationen erwähntralf.wenzel hat geschrieben: Das Feldsymbol bringt was - aber wohl eher bei großen Tabellen.
Richtig, so geht es mir auch.4byte hat geschrieben:ich hab das mit dem Feldsymbolen wegen den Modifikationen erwähnt
ich hab es lieber, als ein Modify in einem Loop.
Das Problem dabei ist: Ich schreibe in ein Feld, das ein Tabellenfeld ist (ja, ich weiß, eigentlich ist es in die Workarea kopiert und wird nur dort geändert - aber doch mit dem Ziel, es in der Tabelle zu ändern) und dann will ich es dort (in der Tabelle) auch sehen. Irgendwo anders steht dann ein MODIFY, von dem ich mir dann überlegen muss, was genau der alles verändert.Daniel hat geschrieben:Ich dagegen sehe lieber den ausdrücklichen MODIFY.
Der MOVE in irgendein Feldsymbol zeigt mir nicht sofort
an daß die Tabelle modifiziert wird - der MODIFY schon.
(Wir reden nicht von Hello-World-Programmen).
Ganz so ist es nicht, denn ohne WHERE braucht man immer noch zusätzliche Befehle (etwa einen CHECK-Befehl, der die unerwünschten Zeilen verwirft). Ein LOOP WHERE mag auf einer Standardtabelle auch sequentiell suchen, führt mit den unerwünschten Zeilen aber zumindest keine weiteren Befehle aus.ralf.wenzel hat geschrieben:Nein, in einer Standardtabelle geht ein LOOP AT WHERE nicht schneller als ein LOOP AT, weil alle Sätze sequentiell durchlaufen werden
Genau letzteres ist aber der Punkt: Du schreibst eben nicht in ein Tabellenfeld, sondern in irgendein anderes Feld. Daraufhin verändert sich automagisch der Tabelleninhalt. Das ist nicht transparent.ralf.wenzel hat geschrieben:Das Problem dabei ist: Ich schreibe in ein Feld, das ein Tabellenfeld ist (ja, ich weiß, eigentlich ist es in die Workarea kopiert und wird nur dort geändert
Na, dann liegt die Lösung doch auf der Hand: Gewöhn Dir auch sonst den MODIFY an, dann vergisst Du ihn im LOOP AT SCREEN auch nicht mehr.ralf.wenzel hat geschrieben:Zudem bin ich einer der ganz großen MODIFY-Vergesser (gerade im LOOP AT SCREEN, weil ich den MODIFY sonst nie verwende).
Daniel hat geschrieben:Ich dagegen sehe lieber den ausdrücklichen MODIFY.
Der MOVE in irgendein Feldsymbol zeigt mir nicht sofort
an daß die Tabelle modifiziert wird - der MODIFY schon.
(Wir reden nicht von Hello-World-Programmen).
Nicht irgendein anderes Feld. Du schreibst in exakt in der richtigen Adresse anstatt erst in einer anderen Tabelle nachzuschauen (Speicherverwaltung) , wohin deine Daten müssen.DeathAndPain hat geschrieben:[
Genau letzteres ist aber der Punkt: Du schreibst eben nicht in ein Tabellenfeld, sondern in irgendein anderes Feld. Daraufhin verändert sich automagisch der Tabelleninhalt. Das ist nicht transparent.
Kannst du solche Situationen benennen? Würde mich interessierenblack_adept hat geschrieben: Zumal ich gerade erst gelernt habe, dass es durchaus Situationen geben soll, wo ein Feldsymbol langsamer ist als eine Workarea.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
4byte • DeathAndPain
Natürlich hat er es verstanden, genau wie ich auch. Aber es ist eben nicht so gut lesbar, wenn man mit einer Feldzuweisung irgendwo inmitten einer Tabelle ein Feld ändert, als wen nman die zu ändernde Zeile in einer (wie auch immer gearteten) Workarea vorbereitet und dann per MODIFY explizit sagt, jetzt ändere die Tabelle.gtoXX hat geschrieben:Er zeigt es Dir nur nicht an, wenn Du das Wesen von Feldsymbolen nicht verstanden hast, sorry.
Langsamer ja. "X-fach langsamer" würde ist gerne einen Nachweis sehen.Ein Feldsymbol ist ein Pointer. Ein Modify ist immer xfach langsamer, da speicher hin und herkorpiert werden muss anstatt gleich auf den Speicherbereich zu schreiben.
In älteren Releases (3.x) war das direkte Ändern von Tabellenzeilen über Feldsymbole meines Wissens gar nicht möglich. Die Sprache hat sich da weiterentwickelt und ist flexibler geworden. Aber zu behaupten, die ganzen alten Systeme seine alle von der Software her langsam und ineffizient gewesen, finde ich ziemlich anmaßend. black_adept hat es gut auf den Punkt gebracht: Zeige mir mal ein produktives Programm, bei dem eine Umstellung von MODIFY auf Feldsymbole überhaupt eine nicht nur messbare, sondern auch nennenswert wahrnehmbare Performanceverbesserung gebracht hätte (ohne dass das Programm schon vorher in anderer Hinsicht ineffizient programmiert gewesen wäre).Bei wirklich großen Tabellen, wäre dein Vorgehen mit Modify extrem sträflich und würde von mir nicht in ein P System gelagen.
Speculative Execution ist bei hochgepatchten OS in den allermeisten Fällen akutell ohnehin unterbunden... aber das ist ja wieder nochmal ein ganz anderes Themablack_adept hat geschrieben:[...] prozessorseitiges Cache-Prefetching und Speculative Execution [...]