[Gambas-user] variable declaration everywhere ???
Rolf-Werner Eilert
rwe-sse at osnanet.de
Wed Dec 12 10:35:29 CET 2018
Doesn't that slow down a bit?
I know, on today's CPUs it may not be an instant drawback, but just
consider what happens if such a function is called hundreds or thousand
of times whithin a larger scope. Then redefining the variable will
quickly grow exponentially.
Just image TableView_Data, which rebuilds the whole table whenever the
user moves something on the screen. Each time the Data event is called
for every single cell of the table. In cases where I need such variables
there, I define them globally and just re-use them.
In my code, I define counting variables in the function they are used
in. But object variables which are used very frequently I define once on
module level and reuse them rather than defining them over and over
again. It's this feeling that it takes a lot of pushing values forth and
back, storing, deleting, garbage collection stuff... I just feel more
secure knowing that a variable is redefined 20 times than 20,000 times
during runtime.
Regards
Rolf
Am 12.12.18 um 00:38 schrieb Jussi Lahtinen:
> Every time you redefine it, it is redefined. And depending on
> implementation the variable could be valid only inside of the loop. If
> not, then it is what it is defined.
>
> For idx as integer = 0 to things.max
> dosomething(thing[idx])
> next
>
> Above idx is integer.
>
> ...
> For idx = 0 to others.max
> dosomthingelse(others[idx])
> next
>
> Above idx is either undeclared or integer, depending on implementation.
>
> ...
> For each idx as float in floatarray
> dowhatever(idx)
>
> Above idx is float.
>
>
> Jussi
>
>
> On Wed, Dec 12, 2018 at 1:31 AM Bruce <adamnt42 at gmail.com
> <mailto:adamnt42 at gmail.com>> wrote:
>
> Well, I haven't tried it yet but a few things pop into my mind.
>
> Consider a method that has lots of use of "throw away"
> indexers/iterators,
> For idx as integer = 0 to things.max
> dosomething(thing[idx])
> next
> ...
> For idx = 0 to others.max
> dosomthingelse(others[idx])
> next
> ...
> For each idx as float in floatarray
> dowhatever(idx)
>
> etc
> Is it going to redefine idx each time?
>
> b
>
> On 12/12/18 9:46 am, Benoît Minisini wrote:
> > Le 12/12/2018 à 00:11, Jussi Lahtinen a écrit :
> >> Why would it be harder to debug?
> >> David gave great example of it usage (pretty much only case where I
> >> use it) and I think it only makes code more readable and less scope
> >> for the variable.
> >>
> >>
> >> Jussi
> >>
> >
> > Because as soon as variables can be declared anywhere, people
> will start
> > to use that for writing ugly code. :-)
> >
>
> ----[ Gambas mailing-list is hosted by https://www.hostsharing.net ]----
>
>
>
> ----[ Gambas mailing-list is hosted by https://www.hostsharing.net ]----
>
More information about the User
mailing list