[MERGE] Improve decorators when necessary
John Arbash Meinel
john at arbash-meinel.com
Thu Jan 25 15:43:05 GMT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Martin Pool wrote:
...
>> In testing the difference is 300ms for bzr --version with the new
>> decorators versus 270ms without them. So the fact that they add 30ms to
>> startup time is significant, and worth the effort of avoiding it.
>
> Very nice.
>
>> -def needs_read_lock(unbound):
>> +
>> +def _get_parameters(func):
>> + """Recreate the parameters for a function using introspection.
>> +
>> + :return: (function_params, passed_params)
>> + function_params is the list of parameters to the original function.
>> + This is something like "a, b, c=None, d=1"
>> + passed_params is how you would pass the parameters to a new function.
>> + This is something like "a=a, b=b, c=c, d=d"
>> + """
>
> When I first read the docstring, it was not clear to me that you were
> returning strings containing python source code, rather than a
> structured representation.
I'll clean it up. At one point it was something slightly different,
before I found the functions in 'inspect' I was doing it all manually.
>
>> + global _inspect
>> + if _inspect is None:
>> + import inspect
>> + _inspect = inspect
>
> Is this to avoid the overhead of running the import statement each time
> this method is entered?
That was the thought. I have a few options:
1) 'import inspect' at the top. The problem is inspect is one of the
files we *don't* want if we can help it. (Hence the
'inspect_for_copy.py' that I wrote).
2) lazy_import('import inspect'). That requires making decorators depend
on lazy_import. And I was trying to keep dependencies minimal. This
would certainly be an alternative, though.
3) 'import inspect' inside the function. I thought we found that to be a
significant overhead.
>
> +1
>
Thanks. I'll definitely clean up the doc before submitting. But what are
your feelings about the 'import inspect' stuff?
John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFuNAJJdeBCYSNAAMRAkYVAKCUv78kkSxIZZ0ogjqXgxg0/lnduACgk9np
9iVOv1vKQSZNzrua6bQt+jo=
=KTJn
-----END PGP SIGNATURE-----
More information about the bazaar
mailing list