[Newbies] Re: Another extension proposal -> subsets
cdrick
cdrick65 at gmail.com
Fri Jul 25 17:07:01 UTC 2008
really interesting.
but it reveals slower but it was because of Set operations. To be consistent
with other method, I used an array.
subsets6
| subsetsSize subsets workArray |
workArray := self asArray.
subsetsSize := 2 raisedTo: self size.
subsets := Array new: subsetsSize.
1 to: subsetsSize do: [:sift |
subsets at: sift put:
(workArray selectIntegerMask: sift into: (Set new: sift highBit) )].
^subsets
Putting asSet as the end is very expensive when the collection is big
results:
set := (1 to: 15) asSet.
[ set subsets "first sift" ] timeToRun ." 2484"
[ set subsets4 "combinationsSize:do:"] timeToRun. " 1598"
[ set subsets5 "Zulk"] timeToRun." 12493" "I think he uses Set for the
subset"
[ set subsets6 "optimized sift] timeToRun. " 1436" "Winner :) "
Thats was instructive, especially the way you deal with bit. Nice also how
you removed the reverse(s).
Cédrick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20080725/ce3d9125/attachment.htm
More information about the Beginners
mailing list