Leopold Toetsch writes: > $ time parrot -j -Oc c.imc > in main > 200000 > > real 0m1.069s > user 0m0.910s > sys 0m0.020s > > $ time parrot -C ch.imc > in main > 200000 > > real 0m0.356s > user 0m0.250s > sys 0m0.000s > > I think that a factor 3 improvement in function call speed (and a factor > of ~4 for overloaded vtables) is an argument to have a closer look at > this scheme. Here are again the key ideas: > > * the interpreter structure is the context, and the continuation > * instead of pushing registers onto the register frame stacks an > interpreter structure gets attached to each sub, and the > subsequent code is running with that interpreter
Yes, this scheme is definitely worth a look. I'm currently battling Perl 5's function call speed in my own projects; i.e.: for (1..4000) { # OpenGL calls } # Fast enough (30 FPS) ----- sub draw { # OpenGL calls } for (1..4000) { draw() } # Not fast enough (18 FPS) This isn't something I want to have to battle. When a language severely limits my ability to abstract, I consider not using that language in favor of something that doesn't punish me. I really don't want to give C++ preference to Perl 6. Luke