Re: Silva Metadata: support for delegates?

Clemens Klein-Robbenhaar <crobbenhaar-S0/[email protected]>
Newsgroups gmane.comp.web.zope.silva.devel
Message-ID <[email protected]>
Hi JW,

[...]
> I'm still not sure whether this merge does not actually defeat the orignal goal
> for the getMetadataValue method: to be as quick as possible. But there might be
> some problem with this method for other reasons anyway. So, let's review the
> current state.

  Oh, I admit I did not take this into account ...

  In case there is no object delegator set up. the extra code boils down to:

         bind_data = annotations and \
                        annotations[MetadataNamespace].get(BindingRunTime)
         if bind_data:
             delegate = bind_data.get(ObjectDelegate)
             if delegate:
                # not reached here

This does:

  a) check if the "annotations" are not None -- here I could be more explicit and
     hence cheaper ... I do not think the "annotations" object could have
     an expensive __nonzero__ method, if it exist, but maybe it does ...

  b) do a key access ("annotations[MetadataNamespace]") on an object of type
     "Annotations" (which is just a PersistentMapping in disguise).

  c) ... and a "get(BindingRunTime)" on the returned Annotations object
     (again a PersistentMapping).

     I guessed this is not so expensive, as there is a similar call a few
     lines below.

  d) finally this does again a non-optimal boolean comparison instead of
     checking for None and then again a get on a PersistentMapping

  Beside of the optimizations in a) and d) now obvious to me after being
pointed to, I am not certain about the performance impact.

  Is there any code to check the performance of that method,
or am I expected to write my own stuff for it? I can try to do, but I am
not sure if I get the point where performance issues kick in.
  Did the performance issue only happend with large sites (e.g. due to ZODB
cache size issues), or can this reproduced with a small test site, too?

Cheers,
Clemens
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.