Dan Sugalski wrote:

> How much of the speed win is from the cycle count instead of stack 
> walking? Unless you've solved the problem of recursive interpreter 
> calls and setjmp, it's not a valid solution, no matter what the speed 
> win might be.
According to my notes the progression (for 5000 lives) was:
CVS: 172 seconds
Cycle count instead of stack walk: 97 seconds
COW with stack walk: 158 seconds
Cycle count + COW: 81 seconds
The performance gain from COW is fairly small, as it really only 
results from the decreased number of compaction runs needed.
The performance loss from the stack walking code is the major
area; what concerns me is that that overhead is going to be
incurred all the time, not only when situations arise that might
require it - you may recall that your original objection to the
cycle count code was based on the same reasoning.

Anyway, as I said, this is purely an academic exercise - I am 
not proposing that any changes be made to Parrot. When 
features are added to Parrot that cause my current code to
fail, I can find an alternative solution, reject those features, or
simply abandon the exercise - you do not have those options,
so you have to use code that will support everything you intend
to do in the future.

> Neither 3 nor 4 fundamentally require 1 or 2,
I know that Mike is working on implementing COW in a way that
will not break anything else; I have just been experimenting with
a different approach that is based on point 2. I will be sending
my patch to Mike so he can see if there is anything he can use.
-- 
Peter Gibbs
EmKel Systems

Reply via email to