[Python-Dev] Meta-reflections

Kevin Jacobs jacobs@penguin.theopalgroup.com
Thu, 21 Feb 2002 09:10:54 -0500 (EST)


On Thu, 21 Feb 2002, Moore, Paul wrote:
> Hmm. I tend to favour "do it right, then do it fast". If there's a
> performance hit on dir(), why can't it be made faster?
[snip]
> Of course, we *really* want vars() here, as we're otherwise doing work in
> dir() to get entries that we then throw away.

dir(object) simply doesn't do what we want.  I've tried several times to
write a correct pickler using dir(object) and have always run into problems
due to pathological corner-cases.  I encourage you to try your hand at it.

In the process I've found another issue with the slots implementation.
I'll post the details to python-dev in a separate e-mail.

> > Note that it does an unnecessary getattr, hasattr, memory
> > allocation and incurs loop overhead on every dict attribute,
> > but otherwise it should work once vars is fixed.
>
> Efficiency again. I'd have to bow to your greater experience here. Although
> with pickling, doesn't I/O usually outweigh any performance cost?

I can't speak for everyone's applications, but we frequently pickle to
memory or to the operating system buffer-cache don't live long enough to hit
the disk.

Thanks,
-Kevin

--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com