[squeak-dev] Re: Float oddities

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sat Sep 28 07:11:51 UTC 2013


endianness... in old vm float were stored in big endian, so converting one
int->float is faster than reversing float endianness (as it is programmed
in the vm at least)


2013/9/28 Bob Arning <arning315 at comcast.net>

>  FWIW, I reran my 3 tests and the gap in the 2 interpreter versions
> narrowed, but old is still faster. And I still can't guess why a pure float
> compare is slower than a float-int compare.
>
> Cheers,
> Bob
>
> Squeak3.2gamma(interp 3.8.12)
> 1 < 1.0 = #(507 506 500)
> 1.0 < 1.0 = #(764 776 768)
> 1 < 1 = #(230 234 238)
> 1.0 < 1 = #(501 503 496)
>
> Squeak4.5 (cog)
> 1 < 1.0 = #(23562 28802 28797)
> 1.0 < 1.0 = #(122 122 125)
> 1 < 1 = #(87 91 90)
> 1.0 < 1 = #(151 149 149)
>
> Squeak4.5(interp 5.7.4.1)
> 1 < 1.0 = #(618 612 605)
> 1.0 < 1.0 = #(845 845 856)
> 1 < 1 = #(269 272 269)
> 1.0 < 1 = #(586 581 591)
>
>
>  On 9/27/13 9:08 PM, David T. Lewis wrote:
>
> On Fri, Sep 27, 2013 at 05:51:33PM -0400, Bob Arning wrote:
>
>  I thought I'd extend the test to an older squeak&vm
>
> ---interpreter vm (3.8.12) squeak 3.2 ---------
> Float compareTiming: 1 to: 1.0 ==> 496
> Float compareTiming: 1.0 to: 1.0 ==> 761
> Float compareTiming: 1 to: 1 ==> 225
> Float compareTiming: 1.0 to: 1 ==> 494
> ---interpreter vm (5.7.4.1) squeak 4.5 ---------
> Float compareTiming: 1 to: 1.0 ==> 719
> Float compareTiming: 1.0 to: 1.0 ==> 991
> Float compareTiming: 1 to: 1 ==> 312
> Float compareTiming: 1.0 to: 1 ==> 686
>
> The old one wins.
>
> Cheers,
> Bob
>
>  (CC to vm-dev list)
>
> I get different results on my Linux PC.
>
> - Squeak 3.2 with interpreter VM compiled by Ian, circa 2006:
>
> 	Float compareTiming: 1 to: 1.0 ==> 1041
> 	Float compareTiming: 1.0 to: 1.0 ==> 1432
> 	Float compareTiming: 1 to: 1 ==> 390
> 	Float compareTiming: 1.0 to: 1 ==> 1108
>
> - Squeak 4.4 with Ian's 4.4.7-2357 VM, circa 2012:
>
> 	Float compareTiming: 1 to: 1.0 ==> 840
> 	Float compareTiming: 1.0 to: 1.0 ==> 1176
> 	Float compareTiming: 1 to: 1 ==> 420
> 	Float compareTiming: 1.0 to: 1 ==> 836
>
> - Squeak 4.4 with my locally compiled 4.12.6.2787 VM (because I cannot use
>   Ian's 4.10.2.2614 from squeakvm.org due to a Linux glib compatibility
>   problem for the outdated Linux on my PC):
>
> 	Float compareTiming: 1 to: 1.0 ==> 782
> 	Float compareTiming: 1.0 to: 1.0 ==> 1077
> 	Float compareTiming: 1 to: 1 ==> 461
> 	Float compareTiming: 1.0 to: 1 ==> 789
>
> Perhaps there are other factors on the Mac platform (compiler changes,
> etc) that are affecting the performance. Could you try Squeak 4.4 with
> Ian's unix Mac VM from squeakvm.org and see if you get different results?
>
>   http://squeakvm.org/unix/release/Squeak-4.10.2.2614-darwin10.8.0_i386.tar.gz
>
> Dave
>
>
>
>  On 9/27/13 2:12 PM, Bob Arning wrote:
>
>  Following up Herbert's question, I wrote:
>
> compareTiming: a to: b
> "
> ---interpreter vm (5.7.4.1) ---------
> Float compareTiming: 1 to: 1.0 ==> 719
> Float compareTiming: 1.0 to: 1.0 ==> 991
> Float compareTiming: 1 to: 1 ==> 312
> Float compareTiming: 1.0 to: 1 ==> 686
> ---cog vm (2749)---------
> *Float compareTiming: 1 to: 1.0  ==> 28162*
> Float compareTiming: 1.0 to: 1.0  ==> 148
> Float compareTiming: 1 to: 1  ==> 97
> Float compareTiming: 1.0 to: 1  ==> 179
> "
>
> ^[1000000 timesRepeat: [
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
>    a < b.
> ]] timeToRun
>
> So, some obvious questions:
> - in the interpreter vm, why is comparing two floats slower that an
> integer and a float?
> - what's up with Cog? Three tests are faster by the expected ratio and
> one took a real dive.
>
> Also, the profiler Herbert used could use some attention to the
> NewFloat printing:
>
> 99.9 (898,069)  Multiline1  doOneStep:
> *77.30000000000001* (694,902)  Multiline1 [HkTestLine] doTests:
>      73.8 (663,438)  HkRunin [HkTestStation]  canStartNextTest:
>
> Cheers,
> Bob
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130928/8b167e14/attachment.htm


More information about the Squeak-dev mailing list