Seite 1 von 1

Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 9:02
von Manfred
Hi,
wie ist es eigentlich wenn ich an eine Funktion Parameter übergebe, die dann überhaupt nicht genutzt werden? Ist das egal, oder belasten die irgendwie unnötigerweise den Speicher o.ä.?

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 9:05
von Jan
Manfred,

wenn Du Parameter übergibst sind die ja in der aufgerufenen Funktion nur LOCAL. Das sollte vermutlich eher weniger Speicherprobleme geben.

Jan

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 10:50
von Tom
Aber egal ist es auch nicht. Wenn ein riesiges Array per reference übergeben wird, kann das - je nach Häufigkeit der Funktionsaufrufe - auch ordentlich Kraft kosten. Und umsonst ist sowieso nix. Wenn eine Variable alloziert wird, geschieht etwas. Möglicherweise - bezogen auf die Gesamtkosten der Anwendung - nicht viel, aber jedes Byte Code löst Prozesse aus. Man muss heutzutage zwar nicht mehr wirklich sparsam programmieren, aber ich denke, man kann auf diese Art auch spürbare Performanceverluste generieren - wenn man es massiert macht. Wenn es aber irgendwo eine Funktion gibt, die gelegentlich aufgerufen wird, und die nur zwei von fünf Parametern verwendet, dürfte der Performanceverlust gegenüber der optimierten Variante im Nanosekundenbereich liegen.

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 11:04
von Jan
Tom,

das ist natürlich korrekt. Ich halte es durchaus für besser, nicht unnötig Parameter zu übergeben. Nicht so sehr wegen des Speichers (das sollte in der Tat heute eher weniger relevant sein, wenn man es nicht durch Konstrukte wie von Dir beschrieben auf die Spitze treibt). Aber es macht den Code auch unübersichtlich. Irgendwann verliert man den Überblick, was denn jetzt real benutzt wird und was nur leer irgendwo rumschwirrt. Das betrifft ja nicht nur die Übersichtlichkeit in den jeweiligen Funktionen. Sondern auch die Suche - diese Variablen tauchen dort auf, ohne daß das Sinn ergeben würde.

Von daher bemühe ich selber mich immer, sowas zu vermeiden.

Aber es gibt durchaus auch Situationen, wo ich unbenutzte Variablen habe. Weil ich die früher mal gebraucht hatte, bei einer Codeänderung aber noch nicht die Zeit gefunden hatte, alle Aufrufe um diesen einen Parameter zu kürzen. Oder noch nicht klar ist ob das dauerhaft so bleiben wird, und dann schlepp ich das halt noch etwas mit.

Da ich grundsätzlich mit den W-Compilerwarnungen arbeite stören unbenutzte Parameter natürlich enorm beim compilieren. Das umgehe ich dann immer mit der undokumentierten UnUsed(xParameter) direkt nach den LOACL-Deklarationen. Was dann aber auch etwaige Aufräumaktionen erleichtert. Einfach den Code nach dieser Funktion durchforsten, dann hat man alles beisammen, was eventuell bereinigt werden könnte.

Manfred hat ja nicht geschildert, in welchen Situationen er unbenutzte Parameter mitführt. So akribisch wie der aber immer codet setze ich voraus, daß es hier nicht um Schludrigkeiten oder Faulheit geht.

Jan

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 11:08
von Manfred
es ist genau andersherum. Es gibt (noch) Funtkionsaufrufe, die Parameter übergeben, die aber am Ziel nicht benötigt werden. Ich überlege halt nur, ob ich mir jetzt die Mühe mache und danach forsche. Wolfgang C. hatte ja mal ein Tool dafür gabut. Müßte ich nochmal laufen lassen....

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 11:16
von Jan
Manfred,

wenn Du die w-Optionen einschaltest, bekommst Du die doch alle ausgeworfen. Hier also speziell /wu für unbenutzte Variablen. Da muß man nicht mehr lange nach suchen.

Jan

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 11:17
von Manfred
Jan,
da verwechselst Du etwas.
Bevor es wieder endlos wird.

Code: Alles auswählen

rufemichauf(test,test2,test3)
function rufemichauf()
	     tue was
	     return NIL

jetzt klarer?

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 11:25
von Jan
Manfred,

OK. Das kleine Detail hattest Du bislang unterschlagen. Oder so ausgedrückt daß das bei mir nicht so angekommen war.

Jan

Re: Ungenutzte Parameter

Verfasst: Mo, 03. Jun 2019 19:40
von Wolfgang Ciriack
Ja Manfred, lass doch mal den Project_Checker laufen, der müsste dir die Stellen anzeigen :D