El Jueves, 7 de Mayo de 2009, Saúl Ibarra escribió:
Aupa ibc!
Porque es mas eficiente? En tu ejemplo haces 2 comparaciones y una
operacion logica y ella solo hace una comparacion, no? Se me escapa
algo?
Sí, me explico:
if ( $fd == "192.168.9.52" && $fU =~ "^1[0-9]+" )
Primero se hace una comprobación:
$fd == "192.168.9.52"
Ésta es una comparación de igualdad "==" que siempre será más rápida que una
comparación de expresión regular. Además, es muy muy posible que la mayor
parte de los requests que lleguen no tenga From domain "192.168.9.52". Y si no
se cumple la primera condición, no se hace la segunda (la de la expresión
regular). Es decir, no es que mi sugerencia sea más rápida cuando el From
coincide (que posiblemente sea incluso algo más lenta), sino que es más
eficiente cuando el From no coincide (que entiendo será la mayor parte de las
veces).
Por otra parte, la expresión que Laura proponía era:
if (from_uri=="sip:1[0-9]*@192.168.9.52")
Si el request lleva un From un poco puñetero (pero perfectamente válido) como:
From: SIP:123232323@192.168.9.52
entonces la expresión regular fallaría porque "SIP" aparece en minúsculas. Una
solución es poner ls "i" de "case insensitive", lo que hace la
comprobación
más lenta, pero ¿para qué hacer eso si lo único que queremos comparar es el
username (numérico) y el domain (una IP)?
--
Iñaki Baz Castillo <ibc(a)aliax.net>