On Sun, May 27, 2012 at 8:31 AM, Maciej Fijalkowski <[email protected]>wrote:

> On Sun, May 27, 2012 at 2:27 PM, Makoto Kuwata <[email protected]> wrote:
>
>> Hi Maciej,
>>
>> On Sun, May 27, 2012 at 7:45 PM, Maciej Fijalkowski <[email protected]>
>> wrote:
>> > Hi Makoto.
>> >
>> > sys._getframe(1).f_locals will stay slow. The reason for this is that
>> you
>> > have to create all the locals and put them in a dictionary (they
>> normally
>> > don't even exist on the heap). Because of that we decided the JIT should
>> > simply bail out and give up trying to optimize this particular code.
>>
>> I agree to PyPy team's decision.
>> Some points may be slower on PyPy, but almost of all is much faster
>> than CPython.
>>
>>
>> > Note
>> > that as documented on the python website, this functionality is mostly
>> for
>> > implementing debuggers and such (where speed does not matter), do you
>> > *really* need your callers locals?
>>
>> Yes. I need to access to caller's local variables in my product (=
>> Tenjin template engine)
>> and sys._getframe() is reasonable solution for it (at least in CPython).
>>
>>
>> > Sounds like a very deep magic to me, I
>> > can point you to this presentation [1] as to why it might be a bad idea.
>> >
>> > [1].. http://www.youtube.com/watch?v=8e0l_Dt28MQ
>>
>> I know that sys._getframe() is kind of black magic, but I must use it
>> because it is only the way to access to caller's local variables.
>>
>> My goal is to access to caller's local variables, and sys._getframe() is
>> just a way to reach to goal.
>>
>
> My point is mostly that style-wise the design decision that led you to "I
> need to inspect the callers variables" was probably not a very good one.
> It's very tempting to use black magic, because writing explicit passing of
> arguments is too verbose, but remember that explicit is always better than
> implicit. I won't try to convince you any more - it's more about style than
> about what can or cannot be made fast on pypy.
>
> Cheers,
> fijal
>
> _______________________________________________
> pypy-dev mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/pypy-dev
>
>
If this is a template engine there's no reason you have to implement scope
using python's scope directly, both Django, Jinja, and others implement a
different scoping system on top of Pythons.

Alex

-- 
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
_______________________________________________
pypy-dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to