If this was the case, why is there the possibility to pass by reference at all?
A use case for me to "pass by value" is to "write protect" a variable.
By reference is the way it always was! ... and passing huge variables by value can decrease performance, because always a duplicate of the data is created and passed.
When passing a variable via constant reference (CONST) it is also input only ... and it the expected parameter definition matches the passed parameter a pointer on the original variable is passed (no need to duplicate anything).
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
Modernization – Education – Consulting on IBM i
IBM Champion since 2020
"Shoot for the moon, even if you miss, you'll land among the stars." (Les Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them and keeping them!"
"Train people well enough so they can leave, treat them well enough so they don't want to. " (Richard Branson)
"Learning is experience … everything else is only information!" (Albert Einstein)
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Patrik Schindler
Sent: Saturday, 26 August 2023 17:51
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Passing Parameter as Variable vs as address of variable
Hello Barbara,
Am 26.08.2023 um 00:14 schrieb Barbara Morris <bmorris@xxxxxxxxxx>:
If you're asking about passing the address of a variable by value vs passing the variable by reference ...
They both behave the same, with the same performance.
When looking at your assertion from a "modern hardware" point of view, counting wall clock time, I agree. The difference is negligible. Double the amount of some µs is still some µs. Too fast for a human being to be detected.
When looking at power efficiency and counting CPU cycles, I assert that handling pointers is in almost any case more efficient (needing less CPU cycles) than actually duplicating data in RAM. Especially when the data exceeds the size of a pointer.
For that I also prefer to use pointers wherever possible. But…
But passing a variable by reference is generally good and passing its address by value is generally bad.
If this was the case, why is there the possibility to pass by reference at all?
A use case for me to "pass by value" is to "write protect" a variable. The called application now can alter the variables' contents at will. It won't get changed for the calling application.
But maybe there are other ways to get the described "readonly" feature.
:wq! PoC
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.