[squeak-dev] Cog VM Performance

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Fri Sep 27 15:15:22 UTC 2013


I've published a change to accelerate mixed integer/float comparisons in
COG (comparisons between float and int)
Search for COG issues at
https://code.google.com/p/cog/issues/detail?id=41&can=1&q=float
It might have been integrated in pharo VM, but not yet by Eliot in official
cog VM

Now that I think of it, this is also one thing that changed in the image in
4.x series: (1/10) ~= 0.1
Comparisons used to convert Integer/Fraction to Float for comparison (exact
-> inexact), now it's the other way around Float->Fraction.
>From there might come the bitShift...



2013/9/27 Herbert König <herbertkoenig at gmx.net>

> Hi David,
>
> i checked with this VM and it is a VM issue.
> In the interpreter VM all images take very similar time while the new
> image with the Cog VM is dramatically slow with integer to float
> conversions.
> The snipped I sent in the other post is sufficient to show the effect.
>
> Thanks to all who gave me tips. I happily use the Cog VM with Float and
> get an improvement from above two minutes to 30 seconds without the tally.
>
> Cheers,
>
> Herbert
>
> Am 27.09.2013 14:04, schrieb David T. Lewis:
>
>  It seems likely that the difference will be something in the image (4.4
>> versus
>> 3.8) as opposed to something in the VM (Cog versus interpreter). You
>> should
>> be able to confirm this by running the tests with an newer interpreter VM
>> from http://squeakvm.org/win32/. You can use that VM to run both the 3.8
>> and
>> the 4.4 image.
>>
>> Assuming that the difference is related to the image, and if 4.4 with Cog
>> is five times slower than 3.8 in your tests, then I would expect that 4.4
>> with the interpreter should be about ten times (!) slower than 3.8 with
>> the interpreter.
>>
>> If that is the case, then it should be easy to find the difference using
>> a profiler. Andreas' high performance profiler is currently available only
>> for Cog, so you are limited to using use the normal profiler when running
>> with interpreter VM. But if you can confirm that the issue is in the
>> image,
>> then you can use Cog with Andreas profiler to do the detailed profiling.
>>
>> Dave
>>
>>
>> On Fri, Sep 27, 2013 at 12:26:32PM +0200, Herbert K?nig wrote:
>>
>>> Hi Folks,
>>>
>>> I'm doing some simulation in Squeak 3.8 and as some tests ran over two
>>> minutes I decided to try a more recent image with cog vm.
>>>
>>> To my surprise 4.4 took around 5 times as long as 3.8. I believe I do
>>> nothing out of the ordinary here. Time is spent in:
>>> 24% SmallInteger>>negative; 22% SmallInteger>>bitShift: (I don't use
>>> bitShift: explicitly) and 20% Array>> collect:
>>>
>>> Which image and VM should I use to verify this before sending the
>>> complete message tallies?
>>>
>>> Cheers
>>>
>>> Herbert
>>>
>>> I used the following recent image / vm:
>>> Image
>>> -----
>>> C:\daten\Squeak\4_4Dev\**Squeak4.4-DCSE.image
>>> Squeak4.4
>>> latest update: #12333
>>> Current Change Set: Knacken mit APX
>>> Image format 6505 (32 bit)
>>>
>>> Virtual Machine
>>> ---------------
>>> C:\daten\Squeak\4_4Dev\Squeak.**exe
>>> Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.302]
>>> Win32 built on Jul 15 2013 15:35:13 Compiler: 3.4.4 (cygming special,
>>> gdc 0.12, using dmd 0.125)
>>> platform sources revision VM: r2749
>>> http://www.squeakvm.org/svn/**squeak/branches/Cog<http://www.squeakvm.org/svn/squeak/branches/Cog>Plugins: r2545
>>> http://squeakvm.org/svn/**squeak/trunk/platforms/Cross/**plugins<http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins>
>>> CoInterpreter VMMaker.oscog-eem.302 uuid:
>>> 2ac39432-ac54-4584-964e-**b129c90792f4 Jul 15 2013
>>> StackToRegisterMappingCogit VMMaker.oscog-eem.302 uuid:
>>> 2ac39432-ac54-4584-964e-**b129c90792f4 Jul 15 2013
>>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130927/a09ea071/attachment.htm


More information about the Squeak-dev mailing list