una sociales redes que personal perfiles perfil para hacer ejemplos descripcion describirme como biografia bio erlang profiling

erlang - sociales - que es tu bio



Erlang: cómo hacer un perfil de si qlc: q realiza escaneo de tabla completa, escaneo de prefijo de tecla o búsqueda de clave? (3)

¿Cómo hacer un perfil de si qlc: q realiza escaneo de tabla completa, escaneo de prefijo de clave o búsqueda de clave?

Por ejemplo, ets de tipo establecido con entradas como {{KeyPrefix, KeySuffix}, Value} -

qlc:q([ {{KeyPrefix, KeySuffix}, Value} || {{KeyPrefix, KeySuffix}, Value} <- ets:table(Table), KeyPrefix =:= Something ])

¿Escaneo completo de tabla o escaneo de prefijo de tecla?


ETS no está implementado en Erlang, se implementa en el sistema de tiempo de ejecución (presumiblemente en C?). Como tal, no creo que sea posible hacerlo hoy. Incluso si descubrió una forma de hacerlo, su método podría romperse cuando se actualizó a una nueva versión de Erlang. Un método confiable requeriría que el sistema de tiempo de ejecución expone algún tipo de API de introspección a las entrañas de ETS, y creo que es poco probable que suceda mientras no se implemente en Erlang. Por supuesto, podría buscar en el código para tener una mejor idea de lo que podría suceder en un escenario determinado, pero sospecho que su tiempo sería mejor enfocado en el código de su aplicación.


En nuestra experiencia, a veces una evaluación qlc (a través de la lista de comprensión) es muy inteligente, y a veces es muy tonto. Es decir, creo que tu pregunta es válida.

No conozco ninguna forma de hacer exactamente lo que quiere, pero puede obtener esta información por otros medios. Sin duda, puede ver el código fuente del módulo qlc para ver si puede obtener alguna información de eso. Además, puede insertar algunas instrucciones de depuración dentro de las funciones qlc y recompilar su tiempo de ejecución de Erlang para obtener más comentarios.

Buena suerte
-tjw


Puede obtener mucha información sobre su expresión QLC utilizando qlc: info / 1 . Puede que eso no ayude a determinar si una subconsulta determinada usa un escaneo completo de tabla o lo que sea, pero eso le devuelve el plan de consulta y las tablas relacionadas con su consulta, que luego puede pasar a ets: info / 1 para recuperar su tipo y Keypos.