Stefan Israelsson Tampe <stefan.ita...@gmail.com> writes: > On Saturday, November 20, 2010 12:11:16 am Ludovic Courtès wrote: >> Hi, >> >> Stefan Israelsson Tampe <stefan.ita...@gmail.com> writes: >> > #include "cfkn.h" >> > #define LOCAL_REF(i) fp[i] >> > #define LOCAL_SET(i,v) fp[i] = (v) >> > void cfkn3676(SCM *fp, SCM **spp) >> > { >> > >> > /* setup of environment */ >> > SCM *objects, *free, program, *sp, sss[100]; >> > sp = sss; >> > program = fp[-1]; >> > objects = SCM_I_VECTOR_WELTS (SCM_PROGRAM_OBJTABLE (program)); >> > free = SCM_PROGRAM_FREE_VARIABLES(program); >> > /* compiled section */ >> > >> > LCASE3666: >> > goto L3668; >> > LCASE3665: >> > sp++; *sp = LOCAL_REF(1); >> > sp++; *sp = SCM_I_MAKINUM(0); >> > sp-=2; if(!scm_is_eq(sp[1],sp[2])) goto L3669; >> > sp++; *sp = LOCAL_REF(2); >> >> [...] >> >> Comparing this to the VM’s bytecode interpreter should show the overhead >> incurred by instruction dispatch. >> >> Did you try to measure this? That’d be interesting. >> >> Thanks, >> Ludo’. > > Yes on one of my machine one loop takes about 6ns for the compiled one and > about 50ns for the bytcode, say a factor of 7-10 for simple tasks, but > remember > this is for rather trivial work.
Woow, I didn’t expect so much. Ludo’.