VM Changes in D6

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

VM Changes in D6

Esteban A. Maringolo-2
My curiosity seems to be not depleted yet. :-)

Will D6 VM include any new addition, modification or removal
compared with D5 VM?

Best regards.


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Andy Bower-3
Esteban,

> Will D6 VM include any new addition, modification or removal compared
> with D5 VM?

Offhand the major changes are:

1) Full block closures
2) Improved GC resulting in a 10-20% speed improvement.

Best regards

Andy Bower
Dolphin Support
www.object-arts.com


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Schwab,Wilhelm K
Andy,

> 1) Full block closures

Slick!


> 2) Improved GC resulting in a 10-20% speed improvement.

See, Smalltalkers just don't get it.  Everybody knows that software is
supposed to get slooooOOOOWWWer over time :)  Nice work!!!!

Returning to the serious, is there an impact from closures?  Which way,
and is the 10-20% a net on top of that?  IIRC, you were planning to have
various types of blocks to limit any performance penalty to the blocks
that needed it??  Or are they a good thing all around?

Have a good one,

Bill


--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Andy Bower-3
Bill,

> > 2) Improved GC resulting in a 10-20% speed improvement.

> Returning to the serious, is there an impact from closures?  Which
> way, and is the 10-20% a net on top of that?  IIRC, you were planning
> to have various types of blocks to limit any performance penalty to
> the blocks that needed it??  Or are they a good thing all around?

Well, of course, it depends on what you're doing. I've attached a
comparison of the STIC benchmarks between D51 and D6. Notice that
pretty much everything is better in D6 apart from the alloc test.

The improvements will be partly due to GC and partly due to the block
closures. So-called "clean" blocks will speed up block operations
considerably. The GC improvements are to do with the incremental
collection of garbage and result in the much improved message send
times (as illustrated by the Towers of Hanoi benchmark).

The slighly worse peformance of alloc (and the Floating Math which is
very dependent on alloc times) are a trade-off caused by the new GC
algorithm.

Best regards

Andy Bower
Dolphin Support
www.object-arts.com

attachment0 (23K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Chris Uppal-3
Andy,

> The improvements will be partly due to GC and partly due to the block
> closures. So-called "clean" blocks will speed up block operations
> considerably. The GC improvements are to do with the incremental
> collection of garbage and result in the much improved message send
> times (as illustrated by the Towers of Hanoi benchmark).

I'm looking forward to this, but in the meantime -- on the off-chance that you
or Blair have the time -- I'd /love/ to know how GC improvements can interact
with message send time.

BTW, do the GC changes involve any memory layout changes that I should fold
back into the calculations in 'Space Breakdown' ?

    -- chris


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Esteban A. Maringolo-2
In reply to this post by Andy Bower-3
Andy Bower escribió:
>>>2) Improved GC resulting in a 10-20% speed improvement.
>>Returning to the serious, is there an impact from closures?  Which
>>way, and is the 10-20% a net on top of that?  

> Well, of course, it depends on what you're doing. I've attached a
> comparison of the STIC benchmarks between D51 and D6. Notice that
> pretty much everything is better in D6 apart from the alloc test.

How to read that piece of data?

Best regards.

--
Esteban


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Osvaldo Aufiero-4
In reply to this post by Andy Bower-3
I will take a look

"Andy Bower" <[hidden email]> escribió en el mensaje
news:[hidden email]...

> Bill,
>
> > > 2) Improved GC resulting in a 10-20% speed improvement.
>
> > Returning to the serious, is there an impact from closures?  Which
> > way, and is the 10-20% a net on top of that?  IIRC, you were planning
> > to have various types of blocks to limit any performance penalty to
> > the blocks that needed it??  Or are they a good thing all around?
>
> Well, of course, it depends on what you're doing. I've attached a
> comparison of the STIC benchmarks between D51 and D6. Notice that
> pretty much everything is better in D6 apart from the alloc test.
>
> The improvements will be partly due to GC and partly due to the block
> closures. So-called "clean" blocks will speed up block operations
> considerably. The GC improvements are to do with the incremental
> collection of garbage and result in the much improved message send
> times (as illustrated by the Towers of Hanoi benchmark).
>
> The slighly worse peformance of alloc (and the Floating Math which is
> very dependent on alloc times) are a trade-off caused by the new GC
> algorithm.
>
> Best regards
>
> Andy Bower
> Dolphin Support
> www.object-arts.com
>


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Osvaldo Aufiero-4
Sorry, don't read

"Osvaldo Aufiero" <[hidden email]> escribió en el mensaje
news:[hidden email]...

> I will take a look
>
> "Andy Bower" <[hidden email]> escribió en el mensaje
> news:[hidden email]...
> > Bill,
> >
> > > > 2) Improved GC resulting in a 10-20% speed improvement.
> >
> > > Returning to the serious, is there an impact from closures?  Which
> > > way, and is the 10-20% a net on top of that?  IIRC, you were planning
> > > to have various types of blocks to limit any performance penalty to
> > > the blocks that needed it??  Or are they a good thing all around?
> >
> > Well, of course, it depends on what you're doing. I've attached a
> > comparison of the STIC benchmarks between D51 and D6. Notice that
> > pretty much everything is better in D6 apart from the alloc test.
> >
> > The improvements will be partly due to GC and partly due to the block
> > closures. So-called "clean" blocks will speed up block operations
> > considerably. The GC improvements are to do with the incremental
> > collection of garbage and result in the much improved message send
> > times (as illustrated by the Towers of Hanoi benchmark).
> >
> > The slighly worse peformance of alloc (and the Floating Math which is
> > very dependent on alloc times) are a trade-off caused by the new GC
> > algorithm.
> >
> > Best regards
> >
> > Andy Bower
> > Dolphin Support
> > www.object-arts.com
> >
>
>


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Shaping-2
In reply to this post by Andy Bower-3
> The slighly worse peformance of alloc (and the Floating Math which is
> very dependent on alloc times) are a trade-off caused by the new GC
> algorithm.

Most of my run-time bottlenecks are in these two areas.  Is this situation
likely to change in the near future?


Shaping


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Blair McGlashan
"Shaping" <[hidden email]> wrote in message
news:[hidden email]...
>> The slighly worse peformance of alloc (and the Floating Math which is
>> very dependent on alloc times) are a trade-off caused by the new GC
>> algorithm.
>
> Most of my run-time bottlenecks are in these two areas.  Is this situation
> likely to change in the near future?
>

In a word, no. The allocation of small objects such as Floats could not
really have been much faster than it was in D5, hence it slowing down
slightly in D6. On the whole though this allocation slowdown is only
measurable in micro-benchmarking, and it will be insignificant compared to
the gains in overall computation speed on a more macro scale. The issue is
really that FP arithmetic involves the allocation of an object to hold the
result. This has a number of implications - first there is the cost of that
allocation (and perhaps more importantly the cost associated with collecting
that memory later), and secondly it means that intermediate FP results are
being pulled off and pushed onto the FP stack. While this happens FP
performance is always going to be poor compared to languages that make
optimal use of the FPU. So poor FP performance in Smalltalk is to some
extent an outcome of the reinfication of Floats, and to some extent
(probably greater, though that's only an educated guess) the result of
treating arithmetic operations as message sends which always return a
further object. I believe a clever optimising translator could "cheat" away
at least some of the impact of the latter for common cases by appropriate
inlining, but this is not a short term goal in Dolphin. Another approach
might be to add pragmas to mark calculations as being statically
optimisable, and then having the compiler generate more optimal code at
compile time. This would be unclean, and somewhat at odds with the
philosophy of Smalltalk, but it could be a quick win. However, we have no
plans to do that either I'm afraid.

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: VM Changes in D6

Shaping-2
"Blair McGlashan" <[hidden email]> wrote in message
news:[hidden email]...

> "Shaping" <[hidden email]> wrote in message
> news:[hidden email]...
>>> The slighly worse peformance of alloc (and the Floating Math which is
>>> very dependent on alloc times) are a trade-off caused by the new GC
>>> algorithm.
>>
>> Most of my run-time bottlenecks are in these two areas.  Is this
>> situation likely to change in the near future?
>>
>
> In a word, no. The allocation of small objects such as Floats could not
> really have been much faster than it was in D5, hence it slowing down
> slightly in D6. On the whole though this allocation slowdown is only
> measurable in micro-benchmarking, and it will be insignificant compared to
> the gains in overall computation speed on a more macro scale. The issue is
> really that FP arithmetic involves the allocation of an object to hold the
> result. This has a number of implications - first there is the cost of
> that allocation (and perhaps more importantly the cost associated with
> collecting that memory later), and secondly it means that intermediate FP
> results are being pulled off and pushed onto the FP stack. While this
> happens FP performance is always going to be poor compared to languages
> that make optimal use of the FPU. So poor FP performance in Smalltalk is
> to some extent an outcome of the reinfication of Floats, and to some
> extent (probably greater, though that's only an educated guess) the result
> of treating arithmetic operations as message sends which always return a
> further object.

So, Floats start-out boxed, and end-up boxed again, as proper objects.  Is
this correct?  Are the intermediate manipulations unboxed?

 I believe a clever optimising translator could "cheat" away
> at least some of the impact of the latter for common cases by appropriate
> inlining, but this is not a short term goal in Dolphin.

How does this optimisation relate to boxing of floats?

 Another approach
> might be to add pragmas to mark calculations as being statically
> optimisable, and then having the compiler generate more optimal code at
> compile time. This would be unclean, and somewhat at odds with the
> philosophy of Smalltalk, but it could be a quick win. However, we have no
> plans to do that either I'm afraid.

Clean is almost always better than a quick win.


Shaping