La forma más rápida de filtrar una lista basada en coincidencias parciales.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy tratando de ver si hay una forma más rápida de filtrar una lista basada en coincidencias parciales.Vea el código a continuación. Por cierto, esto es para JMP 12, antes de todas las mejoras de la lista.
los nombres predeterminados aquí ( 1 );
dt = nueva mesa ( "Prueba" ,
Nueva columna ( "AlgunaLista" , Establecer valores ( 1 :: 100000 )),
privado
);
lista = Columna (dt, "AlgunaLista" ) << Tipo de datos (Personaje) << Obtener valores ;
cerca (dt, sin guardar);
filter_by_partial_match = Función ({lista, valor},
dt = Nueva tabla ( "¿Más rápido?" ,
Nueva columna ( "lista de diversión" , Carácter, Establecer valores (lista)),
Nueva columna ( "Bool" , Fórmula( Contiene ( minúsculas (: lista de diversión), minúsculas (valor) )) ),
privado
);
booleanos = ubicación ( Columna (dt, "Bool" )<< Obtener valores );
lista_filtrada = :funlist[bools];
cerca (dt, sin guardar);
lista_filtrada;
);
hora_de_inicio = HPTiempo ();
lista_filtrada = filtro_por_coincidencia_parcial(lista, "2" );
t_hora = HPTiempo () - hora de inicio;
mostrar (t_tiempo, nitems(lista_filtrada));
¿alguien sabe de alguna manera mejor?
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.Creo que la tabla de datos disfruta del beneficio de subprocesos múltiples (fórmulas col, etc.). Entonces, me sorprendería si hay una forma más rápida de hacer esto en JMP 12.
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.Sí, definitivamente sería una sobrecarga hacer la lista completa en minúsculas.Al menos podría poner el valor en minúsculas.Pero, de nuevo, la ganancia de rendimiento no es mucho.
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.¿Cómo pones toda la lista en minúsculas?¿No superaría el costo de hacerlo cualquier beneficio que obtenga de ello?
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.Sí, me encanta la mejora de la lista 13. Pero desafortunadamente, tengo que usar 12 para el cliente.Me encanta decirles que vayan al 13, pero probablemente sea un intento inútil.
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.
¿Ya lo probaste en la versión 13? Aquí están mis resultados usando el enfoque de tabla privada:
t_tiempo = 115828;
N Elementos (lista_filtrada) = 40951;
Aquí están los resultados usando un bucle:
t_tiempo = 61895;
N Elementos (lista_filtrada) = 40951;
Por el contrario, esto es lo que obtuve en la versión 12, respectivamente:
t_tiempo = 127356;
N Elementos (lista_filtrada) = 40951;
t_tiempo = 161896168;
N Elementos (lista_filtrada) = 40951;
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.Obtengo una ligera mejora si elimino la función de minúsculas de la fórmula de la columna y, en su lugar, envío una lista de minúsculas y establezco el valor en minúsculas.De lo contrario, esto parece bastante rápido.
Re: La forma más rápida de filtrar una lista basada en coincidencias parciales.¡Eso es rápido! Los enfoques de bucle o expresiones regulares ni siquiera se acercarían (lo intenté y fallé...).