--- "J.Pietschmann" <[EMAIL PROTECTED]> wrote: > Glen Mazza wrote: > > No need-the "gotcha" site you gave earlier did > give > > some specific drawbacks under string compares: > > > > http://mindprod.com/jgloss/gotchas.html#COMPARISON > > That's not a drawback. Interned strings allow > comparision of > references: > String a="a".intern(); > String b="a".intern(); > if(a==b) { System.out.println("equal"); } > With non-interned strings you need a.equals(b), > which > may be slower, for longer strings anyway. > > The most important gotcha is that interned strings > may lock > up memory forever.
Yes, I may have misread that--outside of the fact that strings are not GC'ed away, the intern() function does not look that bad (their mention of a possible 64K limit may be an issue if we also keep property values, however.) Still, I still don't know enough at this stage to rule out any particular design. > If interning is done only for > property > names and enumeration tokens (in contrast to > property values), > this may be acceptable. > If we just do that, I believe we're back to enumeration tokens, which don't need intern() anyway. I think the next thing to consider is the storage of specified vs. computed values. Let's say we store pointers for many properties to the same {"property-name", "property-value"} pair. A specified property value of "10%" would not make this a very helpful data structure if that percentage resolves to different computed values for each property sharing this pair. I believe the goal for us then would be just store the computed value for each pair (meaning many more pairs), as long as we take into account the can't-resolve-everything-without-knowledge-of-layout issue. Glen __________________________________ Do you Yahoo!? Free Pop-Up Blocker - Get it now http://companion.yahoo.com/