Is this a buglet? (SmallInteger>>printString related)
Bert Freudenberg
bert at freudenbergs.de
Wed May 30 14:55:08 UTC 2007
Well,
(self asFloat + 0.9) log truncated + 1
would work reliably for SmallIntegers.
The nested conditionals might still win ... in particular if it was
not binary search but based on frequency of numbers.
- Bert -
On May 30, 2007, at 15:02 , Alexander Lazarevic' wrote:
> Hi Göran,
>
> when I wrote printStringBase: I remember I tried to use x ln / base ln
> to get the string length with the same results as you are.
> Depending on
> floats it is just not robust. I went with Stream to keep it simple. It
> sure can help to have an optimized version for the major base rather
> then using printStringBase: 10.
>
> Alex
>
> Göran Krampe schrieb:
>> Hi!
>>
>> In playing around with SmallInteger>>printString (see
>> bugs.squeak.org/view.php?id=6512) I tested this code for
>> calculating the
>> length of the String:
>>
>> self log truncated + 1
>>
>> ...but that doesn't work. The current code in my ChangeSet uses an
>> unrolled binary search (nested ifs) which is 7x faster
>> (#decimalDigitLength) so the above code is not something we would
>> like to
>> use, but I still wonder why it fails and what I would have needed
>> to do
>> about it to get it to work:
>>
>> 999 log truncated ===> 2 As expected.
>>
>> 1000 log ===> 3.0 As expected.
>>
>> 1000 log truncated ===> 2 Eh, what? Not expected!
>>
>> ...ok, yes, I know - Floats are the "tar pits of hell" when it
>> comes to
>> expected results - but... can someone answer if this is a bug or if I
>> simply can't expect this code to work?
>>
>> regards, Göran
>>
>> PS. Strongtalk does in fact do SmallInteger>>printString almost
>> exactly
>> like my enhancement does (didn't peek, promise!) but does it
>> around 5x
>> faster than Squeak. :) I fired it up to look at how it does #log
>> but log
>> wasn't implemented. On the other hand Bryce tested Exupery on my
>> code and
>> it made a real difference - at least 2x better (not sure if he
>> only tested
>> printString). And then he mentioned an obvious improvement in
>> Exupery that
>> would make it even faster. Interesting method for comparing!
>>
>>
>
More information about the Squeak-dev
mailing list
|