[Dev] Small tweak to parcel loader
morgen at osafoundation.org
Fri Jun 11 10:49:33 PDT 2004
I wan't closely involved in the development of
defaultValue/initialValue, but this is my understanding (and those in
the know should correct me):
In the beginning there was defaultValue. As folks used it, and
discovered that defaultValues didn't participate in queries (and for
perhaps other reasons, such as defaultValue collections are read-only),
it was decided to implement initialValue. I believe there was
agreement that the apps group would be standardizing on initialValue.
Recently there has been some talk about the possible inefficiency of
using initialValue (since you could potentially have lots of copies of
the same value), and therefore there are some cases where defaultValue
might make sense (since there is one shared copy of the value, attached
to the attribute itself and not to each item).
A question I have for Andi is: "what is more efficient (in terms of
time): looking up the value of an attribute that has been given an
initialValue, or a defaultValue?" Potentially, retrieving a
defaultValue means there's an extra place to go look for a value (but I
haven't checked the code yet to see how this works).
If one is more time-efficient than the other, then we have to decide
whether we want to optimize for look-up time rather than memory
footprint. It would be interesting to see what real-world performance
gains/costs there are in using either method. Without having that
data, my inclination would be to standardize on initialValue because
it's easier to explain to people, and it offers the behavior that I
expect. However, if you understand the differences between the two and
you feel you want what defaultValue provides, then I guess you're free
to use it. It's nice to give the developer the choice, since they know
the characteristics of their items; for example, if you have 100,000
items and only a handful are going to have a non-default value for one
of their attributes, it might make sense to choose defaultValue over
initialValue in order to reduce memory footprint.
Again, since the decision about which you choose is based on
hypothetical performance differences, it would be nice to actually know
what real-world benefits there are (time-wise and memory-wise). I'm
willing to do some tests if that would help this discussion, or perhaps
others have already looked at this.
P.S. So Lisa, the answer to your question is, "it depends". :-) I
would say use initialValue unless you have a reason not to.
P.P.S. For those who don't know the difference between defaultValue
and initialValue, Andi has it documented here:
On Jun 11, 2004, at 9:51 AM, Lisa Dusseault wrote:
> So for example "attendees" of an event ought to initialize to an empty
> list? or default to an empty list?
> On Jun 11, 2004, at 9:25 AM, Morgen Sagen wrote:
>> By popular demand: if you want to set the defaultValue or
>> initialValue of a list or dict attribute to be an empty list or dict,
>> you may now include either "<defaultValue/>" or "<initialValue/>"
>> inside that attribute's definition. For example:
>> <Attribute itemName="listAttr">
>> <displayName>List Attribute</displayName>
>> <type itemref="String"/>
>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>> Open Source Applications Foundation "Dev" mailing list
More information about the Dev