I dislike them also.
By taking advantage of the specific processor-memory architecture you can accelerate
computations in way not directly related to the mathematical algorithm:
using processor specific vectorization (SSE2,3,...)
blocking,
loop unrolling, ...
You would want to
optimize main memory to L2-cache traffic,
avoid TLB misses
and possibly many other things.
When you go up against MATLAB you are going up against Intel hand tuned BLAS
(10 times faster than naive code depending on the operation).
Large systems that try to optimize on different architectures are
ATLAS BLAS, GOTO BLAS.
Look for paper by Jack Donguerra for the issues involved.
Naive C-code is hopeless.
For a reasonably small system that accomlishes quite a lot using C++ template metaprogramming see Eigen2:
http://eigen.tuxfamily.org/index.php?title=Main_Page
This is your best chance to do something yourself and is also very elegant code.