On Saturday, November 20, 2010 12:11:16 am Ludovic Courtès wrote: > Hi, > > Stefan Israelsson Tampe <[email protected]> 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.
