From: Jeff R. <dv...@di...> - 2012-10-09 18:49:32
|
I don't know that people love it so much as that there is no exact replacement for the functionality. I'm a big proponent of compatibility but shared sets as they previously existed are problematic. I wouldn't be at all surprised if they are thread-unsafe to the point of being able to crash the server. An alternative might be to provide equivalent functionality (order-preserving, multiple entries for keys, access by index or key or case-insensitive key) as a new nsv subcommand, perhaps 'nsv_multiset'. Separately, I was experimenting with a performance enhancement to ns_sets, creating a hashtable mapping the keys to indexes. There is a slight cost in memory and on the first lookup, but it should get to breakeven after only around 3 lookups on average, with decreasing amortized cost after that. The difference is measurable and can be significant, as much as 4x faster on a large set. However, that's measured on a very large set, 1000 keys; and the real savings is pretty small, around 15 microseconds per lookup on average hardware. Is that kind of micro-optimization worth the additional complexity? -J Gustaf Neumann wrote: > Stephen, > > do you remember why you took out the -shared flag from ns_set? > > https://bitbucket.org/naviserver/naviserver/changeset/1cbaf1acc09436f2a1c56102269a8b7fab0be168 > > > it seems that some people love it. We have either to take it > out of > the documentation (and give sensible explanation) or > reintroduce it in the code... > > -gustaf |