[squeak-dev] Re: The defaullt implementation of isEmpty might do too much work

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sat Oct 22 12:42:43 UTC 2016


Please retry with latest trunk version.

2016-10-22 6:48 GMT+02:00 monty <monty2 at programmer.net>:

> Putting #size-based implementations in abstract Collection subclasses
> negates the lazy collection benefit and still penalizes non-abstract direct
> Collection subclasses like CharacterSet and any user-defined direct
> Collection subclass implemented using composition with forwarding to a
> concrete collection. If the default linear complexity of #size and #isEmpty
> bothers you so much, make #size a subclassResponsiblity like #do: instead
> of suddenly penalizing collections whose authors actually did the right
> thing by providing a non-linear #size implementation.
>
> > Sent: Friday, October 21, 2016 at 11:26 PM
> > From: "Eliot Miranda" <eliot.miranda at gmail.com>
> > To: "The general-purpose Squeak developers list" <squeak-dev at lists.
> squeakfoundation.org>
> > Subject: Re: [squeak-dev] Re: The defaullt implementation of isEmpty
> might do too much work
> >
> > Hi Monty,
> >
> >     what happens if you add an isEmpty implement ration based in size to
> SequenceableCollection?
> >
> > _,,,^..^,,,_ (phone)
> >
> > > On Oct 21, 2016, at 3:59 PM, monty <monty2 at programmer.net> wrote:
> > >
> > > All non-trivial collections implement #size or inherit a custom
> implementation, usually just as a return of an inst var. Your #do:-based
> one is 3x as slow in my tests, so you've now made #isEmpty slower for every
> collection that implements #size just to benefit ones whose careless
> authors didn't and so the implementors of lazy collections have one fewer
> message to override.
> > >
> > > Do not do this. People already avoid #ifEmpty: and related messages
> where performance matters and shouldn't have to avoid #isEmpty too.
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20161022/b2953d01/attachment.htm


More information about the Squeak-dev mailing list