Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1417.mcz
==================== Summary ====================
Name: Kernel-mt.1417 Author: mt Time: 8 October 2021, 9:00:42.746201 am UUID: 2dbc9442-c2f2-9843-8d3d-077c3f0d4df3 Ancestors: Kernel-eem.1416, Kernel-mt.1413
Merge 8x speed up in #roundUpTo: and #roundDownTo: for integer arguments due to avoiding the creation of intermediate fractions, which also avoids extra GC time.
Thanks to Stephan (stlu) and Levente (ul) for the idea and feedback!
=============== Diff against Kernel-eem.1416 ===============
Item was added: + ----- Method: Integer>>roundDownTo: (in category 'truncation and round off') ----- + roundDownTo: aNumber + "Overwritten to speed-up integer rounding via modulo instead of using intermediate fractions." + + aNumber isInteger ifFalse: [^ super roundDownTo: aNumber]. + ^ self - (self \ aNumber)!
Item was added: + ----- Method: Integer>>roundTo: (in category 'truncation and round off') ----- + roundTo: aNumber + "Overwritten to speed-up integer rounding via modulo instead of using intermediate fractions." + + | rem quantum | + aNumber isInteger ifFalse: [^ super roundTo: aNumber]. + quantum := aNumber abs. + (rem := self \ quantum) = 0 ifTrue: [^ self]. + ^ (self > 0 + ifTrue: [quantum + 1 // 2 <= rem] + ifFalse: [quantum // 2 < rem]) + ifTrue: [self + quantum - rem] + ifFalse: [self - rem] + !
Item was added: + ----- Method: Integer>>roundUpTo: (in category 'truncation and round off') ----- + roundUpTo: aNumber + "Overwritten to speed-up integer rounding via modulo instead of using intermediate fractions." + + | rem | + aNumber isInteger ifFalse: [^ super roundUpTo: aNumber]. + ^ (rem := self \ aNumber) ~= 0 + ifTrue: [self + aNumber - rem] + ifFalse: [self]!
packages@lists.squeakfoundation.org