Ways to make a free variable local to a function?

Yubin Ruan ablacktshirt at gmail.com
Sun Apr 15 09:58:03 EDT 2018


On 2018-04-15 13:31, Kirill Balunov wrote:
> 
> 
> 2018-04-15 10:58 GMT+03:00 Yubin Ruan <ablacktshirt at gmail.com>:
> 
>     [this is a bit late...]
> 
>     Did you really have any benchmark for it? I know what you are doing but it
>     seems to be a pre-mature optimization. If this really is the case, then we
>     can
>     optimize the Python interpreter.
> 
> 
> I don't know if you intentionally send this message privately to me and not to
> the entire python-list. If it was a mistake, post it there and I will answer
> there too.

Sorry I mistakenly hit the 'Reply' button instead of 'Group-reply'.
 
> Yes I've measured:
> 
> 
>     def func(numb):
>         res = []
>         for i in range(numb):
>             res.append(int(i) + float(i))
>         return res
> 
>     def func_local(numb, _int = int, _float = float):
>         res = []
>         for i in range(numb):
>             res.append(_int(i) + _float(i))
>         return res

Wouldn't this kind of things better be (implicitly) used in the Python
interpreter instead of in this kind of hand-optimized code? That looks
strange.

Nevertheless, if need be, I would opt for that 'static-declared' approach you
described earlier, which give semantic hint on the optimization used.

Thanks,
Yubin
 
>     %timeit func(100000)
> 
>     85.8 ms ± 2.47 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
> 
> 
>     %timeit func_local(100000)
> 
>     72.2 ms ± 892 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
> 
> So in the tight loop it is 16% faster.


More information about the Python-list mailing list