Messages in this thread | | | Date | Wed, 1 Nov 2000 01:08:54 +0100 (CET) | From | Ingo Molnar <> | Subject | Re: 2.2.18Pre Lan Performance Rocks! |
| |
On Tue, 31 Oct 2000, Jeff V. Merkey wrote:
> One more optimization it has. NetWare never "calls" functions in the > kernel. There's a template of register assignments in between kernel > modules that's very strict (esi contains a WTD head, edi has the target > thread, etc.) and all function calls are jumps in a linear space.
this might be a win on a i486, but is a loss with any branch predicting, large-pipeline CPUs (think Pentium IV), which are optimized for CALLs, not for JMP *EAX instructions. This is the problem with assembly optimizations that try to compete with the compiler's work: hand-made assembly can only get worse over time (stay constant in the best case), while compilers are known to improve slowly but steadily. Plus hand-made assembly is a huge stone tied to your legs if you try to swim to other architectures. Eg. we quite often make use of GCC's register-based function parameter passing optimization. We do use hand-made assembly in a number of cases in Linux as well, and double-check GCC's assembly output in critical code paths, but we try to not make it an essential facility.
Ingo
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |