| List: | Internals | « Previous MessageNext Message » | |
| From: | Jay Pipes | Date: | March 2 2009 4:47pm |
| Subject: | Re: [Drizzle-discuss] Removing Array custom vector allocation for semi-join subqueries | ||
| View as plain text | |||
Michael Widenius wrote: > Hi! > >>>>>> "Monty" == Monty Taylor <mordred@stripped> writes: > > Monty> Brian Aker wrote: >>> Hi! >>> >>> On Feb 26, 2009, at 12:21 PM, Mats Kindahl wrote: >>> >>>> recycling. In that case, any pointers into that old memory that are > still >>>> dangling would not be useful, since the memory is likely to be >>>> overwritten with >>> mem_root or not mem_root... I consider this to be pretty bad behavior to >>> rely on. > > Monty> Not mem_root. C++ has much better ways of dealing with this sort of > Monty> thing (automatic delloc when you're done with stuff) mem_root was likely > Monty> very important when it was written, and a great idea then. > > Monty> Now it's just extra complexity that hides behavior. > > For certain objects, memroot is a much better way to do it than with > C++ deallocators: > > - Uses less memory overhead for objects > - Less mutex, as you mainly do one free per query and > - Much faster malloc; Mallocs are done in bigger chunks and for many > queries you can avoid do any mallocs at all (when the base memory you > have is big enough) > > memroot is of course not useful for objects that changes size or has a > short life time, but it wasn't designed for these. For what it's worth, my original email wasn't trying to get into the pluses and minuses of mem_root. I'm aware of the advantages it brings in certain situations (and am looking at ways in which GNU or Boost's ::pool_allocator might be a more standard C++ way of bringing that functionality into Drizzle). My original question was simply in regards to what might be happening in the lifetime of the pointer which was being passed into a vector<> versus Array. Anyway, I'll have a code patch to show later on today which hopefully will clear up the remaining questions... Cheers! Jay
