[squeak-dev] The Trunk: Kernel-mt.1409.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Oct 8 07:02:30 UTC 2021
Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.1409.mcz
==================== Summary ====================
Name: Kernel-mt.1409
Author: mt
Time: 26 August 2021, 11:43:29.370208 am
UUID: 833c07c9-93d9-834e-8e94-59c6a1e941bc
Ancestors: Kernel-eem.1408
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) for the idea!
[65 roundUpTo: 64] bench
AFTER '39,500,000 per second. 25.3 nanoseconds per run. 0 % GC time.'
BEFORE '5,180,000 per second. 193 nanoseconds per run. 1.67966 % GC time.'
[65 roundDownTo: 64] bench
AFTER '45,900,000 per second. 21.8 nanoseconds per run. 0 % GC time.'
BEFORE '5,590,000 per second. 179 nanoseconds per run. 2.29908 % GC time.'
Needs testing and review. Known issue: "65.0 roundUpTo: 64" now returns "128.0" but used to return "128".
=============== Diff against Kernel-eem.1408 ===============
Item was changed:
----- Method: Number>>roundDownTo: (in category 'truncation and round off') -----
roundDownTo: aNumber
"Answer the next multiple of aNumber toward negative infinity that is nearest the
receiver."
"Examples:
3.1479 roundDownTo: 0.01 -> 3.14
3.1479 roundDownTo: 0.1 -> 3.1
1923 roundDownTo: 10 -> 1920
3.1479 roundDownTo: 0.005 -> 3.145
-3.1479 roundDownTo: 0.01 -> -3.15"
+ ^ aNumber isInteger
+ ifTrue: [self roundDownToInteger: aNumber]
+ ifFalse: [(self/aNumber) floor * aNumber]!
- ^(self/aNumber) floor * aNumber!
Item was added:
+ ----- Method: Number>>roundDownToInteger: (in category 'truncation and round off') -----
+ roundDownToInteger: aNumber
+
+ ^ self - (self \\ aNumber)!
Item was added:
+ ----- Method: Number>>roundUpToInteger: (in category 'truncation and round off') -----
+ roundUpToInteger: aNumber
+
+ | rem |
+ ^ (rem := self \\ aNumber) ~= 0
+ ifTrue: [self + aNumber - rem]
+ ifFalse: [self]!
More information about the Squeak-dev
mailing list
|