[squeak-dev] The Inbox: Collections-cmm.874.mcz

Chris Muller asqueaker at gmail.com
Fri Jan 24 22:01:13 UTC 2020


Hi all,

In my trunk image, currently >10% of Dictionary instances have
unnecessarily large internal arrays because they were created with #new but
never grew.

     ((Dictionary allInstances count: [ : e | e size < 3 and: [ e array
size >= 5 ] ]) / Dictionary allInstances size) asFloat
"0.11282051282051282"

A developer wanting compactness should not be required to probe into the
internal implementation to know whether they can write the most compact
code, "Dictionary new" and "Set new".  The most compact code should result
in the most compact size by default, and only if a *larger* default size is
desired, use #new: for optimization.

This also addresses the issue I've been discussing with Levente, ensuring
#new: maintains its performance optimization along with space, as with
OrderedCollections, etc.

Best,
  Chris




On Fri, Jan 24, 2020 at 3:32 PM <commits at source.squeak.org> wrote:

> Chris Muller uploaded a new version of Collections to project The Inbox:
> http://source.squeak.org/inbox/Collections-cmm.874.mcz
>
> ==================== Summary ====================
>
> Name: Collections-cmm.874
> Author: cmm
> Time: 24 January 2020, 3:32:43.628249 pm
> UUID: 107f3a74-177c-4338-9ad3-648e427419a1
> Ancestors: Collections-ul.871
>
> - Optimize for system compactness by ensuring the default internal array
> size of any HashedCollection is not initialized larger than it may ever
> need to be.
> - Let #new: be used to define larger sizes than the minimum, and perform
> comparably with #new even if the minimum size is specified.
>
> =============== Diff against Collections-ul.871 ===============
>
> Item was changed:
>   ----- Method: HashedCollection class>>new (in category 'instance
> creation') -----
>   new
> +       ^ self basicNew initialize: 3!
> -       ^ self basicNew initialize: 5!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200124/3e57c883/attachment.html>


More information about the Squeak-dev mailing list