Wow - fantastic!
@mflatt one thing I see is that PLT_LINKLET_TIMES reports substantially more calls to instantiate-linklet for pycket than for racketcs (the numbers for racket are always lower). Unfortunately it’s hard to tell what linklets are instantiated for, so it might be nice to add something to the API that could give more information there
I’m puzzled by the instantiate numbers. They don’t look right – much smaller than the instantiate line with PLT_EXPANDER_TIMES, for example.
And it should be bigger, because PLT_EXPANDER_TIMES doesn’t cover all instantiate-linklet calls.
Oops, I was confusing msecs and counts. I’m seeing everything these same, as it should be in something like -cl racket/base, where the number of instantiations should not depend on the linklet implementation. Depending on the program, module caching could be relevant. What example gives you different counts?
@mflatt something like pycket -l racket/base
I don’t think caching would be relevant. What number do you get instead of 282?
302
and it should be 1 higher for pycket because we instantiate a linklet with the fasl code as well
and maybe 1 more depending on whether racketcs counts the expander instantiation
Does PLT_EXPANDER_TIMES report 57 for the subset of instantiations that it counts?
for some reason PLT_EXPANDER_TIMES doesn’t report anything on pycket
which I think points to a bug somewhere
@mflatt now that environment variables work correctly, PLT_EXPANDER_TIMES reports 55
the difference is likely not loading configure-runtime submodules
That makes send. I still don’t have any ideas about the 20 instantiations from the full count, but maybe changing instantiate-linklet in two implementations to print linklet/instance names will give a hint at how they differ.