The problem with methods such as GetCPUCyles or GetCPUCoreId is that .NET delegate calls are never inlined. Unmanaged calli calls are not inlined either. PInvokes could be inlined but have their own overheads for managed<->native transition. These overheads could be higher than a small method body. It would be really cool to generate function pointers with the default managed calling convention, basically what JIT does for normal methods. I mean, packing assembly into the body of a managed function, which has a chance to be inlined.