Batch/At (if it wasn't broken, no worries I broke it :-) )
Matthew Dillon
dillon at apollo.backplane.com
Tue Sep 5 10:09:06 PDT 2006
And just as a side note... procedure call overhead on a modern cpu can
be as little as 0 cpu cycles for small procedures, and typically do not
cost more then 5 nanoseconds in any case. This is because procedure calls
use the same hardware branch prediction cache that conditionals use,
procedural returns use a special hardware call-return stack, and stack
memory for arguments is virtually guarenteed to be in the cpu L1 cache
or, even better, the arguments are likely still in the memory write
pipe and can be directly picked up by the instruction pipeline.
In the DragonFly kernel we only inline the tiniest, most heavily-used
critical path routines, though there are still a lot of 'old' inlines
inherited from FreeBSD that have not yet been unwound (the most aggregious
being in the NFS code and containing out-of-band goto's).
-Matt
More information about the Kernel
mailing list