Iñaki Baz Castillo wrote:
El 20/08/07, Ramona Modroiu <ramona(a)openser.org>
escribió:
Un ejemplo de codigo seria lo siguiente:
if(avp_check("$fU", "eq/xxx9/i")) {
...
} else if(avp_check("$fU", "re/^xxx[0-8]$/i")) {
...
}
En openser 1.2.x:
if($fU == "xxx9")) {
...
} else if($fU =~ "^xxx[0-8]$") {
...
}
Vaya, no había caído yo en la cuenta de que también se pueden aplicar
expresiones regulares sin AVP's.
Por cierto, de cara a la eficiencia ¿existe alguna diferencia entre
usar AVPs de texto y variables? Quiero decir, ¿qué es más costoso
computacionalmente?:
a)
$avp(s:texto) = "XXXXXXXX";
if ( avp_check("$avp(s:texto)", "re/^xxx[0-8]$/i") ) { ...
b)
$var(texto) = "XXXXXXXX";
if ( $var(texto) =~" ^XXX") { ...
¿O tal vez sean igual de eficientes?
La variante b) es mas eficiente. Las variables suponen referencia
directa a la memoria privada. Sobre los AVPs ... hay una lista de AVPs
en la memoria compartida y significa mas busqueda dentro de esa lista.
avp_check() te hace falta si hay mas de un avp y quieres verificar las
todas. En el ejemplo anterior vale escribir if($avp(s:texto)) =~"^XXX")
{....}.
En caso de que sean igualmente costosas: ¿qué sentido tienen entonces
los AVP's de texto existiendo variables (las cuáles son más
"digestibles")?
Las variables viven dentro de un proceso. Las AVPs viven dentro de una
transaccion ... estan accesible dentro de la failure_route donde hay
otro proceso que el que habia procesado el mensaje original.
Tambien, las AVPs permiten valores multiples.
Y ya puestos: sé que los AVP numéricos en plan
$avp(i:12) son más
eficientes que los AVP de texto en plan $var(s:cadena), ya que cuesta
menos referirse a un entero que a una cadena de texto. Pero, ¿no
tendría sentido que en tiempo de compilación se convirtiesen los AVP
de texto a AVP numéricos sin más? ya sé que existen los alias, pero
sigue siendo una solución un poco "fea".
eso es una idea :)
Saludos,
Ramona
En fin, cosillas que tenía previstas preguntar algún día y
aprovechando la conversación lo saco ahora... XD
Saludos.
------------------------------------------------------------------------
_______________________________________________
Users-es mailing list
Users-es(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users-es