Si, Xafi, pues a mi me pasó algo así creando dos macros (defines) para sacar el valor absoluto de un valor y el mínimo de dos valores para reducir el overhead (de forma que no se usase tiempo llamando a la función, apilando parámetros bla bla bla, y luego desapilando), te encuentras con que en vez de reducir el tiempo, estás tardando más, y no entiendes por qué, al final ves que son cosas de ese estilo
caso 1:
ABS_M((a))((a) < 0) ? -(a) :(a)
Simple y rápido.
Problema? Llamarla de este modo
s+=ABS_M(6*x-aux->hash(valor))
querías reducir overhead del abs? pues toma, doble overhead del hash
y un caso más del estilo que puse antes:
MIN_M((a),(b)) ((a)<(b)) ? (a) : (b)
y la llamas como
algo=MIN_M(m[i][j],m[i][k]+m[k][j])
otra vez lo mismo, trabajo repetido para nada.
Cosas como estas te enseñan (a fuego xD) a ir con mucho cuidado con lo que #defines