[squeak-dev] The Inbox: Collections-cmm.874.mcz
asqueaker at gmail.com
Fri Jan 24 22:27:37 UTC 2020
Wow, the number of oversized OrderedCollection instances is much worse, 92%.
((OrderedCollection allInstances count: [ : e | e size < 10 and: [ e array
size >= 10 ] ]) /
OrderedCollection allInstances size) asFloat.
On Fri, Jan 24, 2020 at 4:01 PM Chris Muller <asqueaker at gmail.com> wrote:
> 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
> 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.
> 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:
>> ==================== 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') -----
>> + ^ self basicNew initialize: 3!
>> - ^ self basicNew initialize: 5!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Squeak-dev