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