¿El rendimiento se ve afectado al usar MooseX :: Declare principalmente cuando se realiza su magia inicial (es decir, "traducir" la definición a la sintaxis estándar de Perl)? es decir, una vez completada la compilación y la configuración del tiempo de ejecución inicial, ¿existe una diferencia en el rendimiento al llamar a un método MooseX :: Declare frente a un método definido a través de una declaración tradicional?¿El rendimiento alcanzado con el uso de MooseX :: Declare se encuentra principalmente durante el inicio?
Respuesta
La respuesta es sí y no. Dado que MooseX :: Declare usa MooseX::Method::Signatures para realizar el desempaquetado y la validación de parámetros, existe una sobrecarga de tiempo de ejecución en comparación con la no validación de los parámetros.
Pero si su idea de "declaración tradicional" incluye la validación del número y tipo de sus parámetros (y lo que debería si quieres código robusto) entonces no hay razón para pensar que el MXD validación/MXMS no sería nada más lento que la validación que haría usted mismo.
Gracias por su respuesta. Por lo general hago una validación de los parámetros, pero no en el enésimo grado. Creo que tomo el enfoque Perlish de muchos otros desarrolladores de Perl. Supongo que lo que me gusta de MooseX :: Declare es que la sintaxis promueve la legibilidad tanto como cualquier otra cosa. –
MooseX :: Declare es una conversión en tiempo de compilación de la sintaxis declarativa al código "verdadero" de Perl. Toda su sobrecarga es en tiempo de compilación.
La sobrecarga del tiempo de ejecución de la que habla es de validación y coerción del tipo Moose. Ambos son opcionales: no necesita especificar un calificador de tipo y no necesita especificar is coerce
. Si no usa ninguno, su rendimiento en el tiempo de ejecución debería ser muy similar al que tendría sin la magia de MooseX :: Declare.
Por lo tanto, en términos de tiempo de ejecución, es ganar/ganar. Usted solo paga por las funciones que usa. La validación de tipo es algo que tendría que hacer manualmente de todos modos, y la coerción, aunque definitivamente es un golpe de rendimiento, se habilita por argumento.
- 1. Necesito ayuda para instalar MooseX :: Declare
- 2. Errores útiles para Moose y MooseX :: Declare
- 3. Tomcat bloquea durante el inicio webapp
- 4. ¿Cómo puedo declarar que una clase usa más de un rol con MooseX :: Declare?
- 5. ¿Cómo inicializar un servlet durante el inicio con parámetros?
- 6. Rieles: el uso de will_paginate con una asociación compleja encuentra
- 7. evitar conflictos durante el uso de
- 8. No se puede manejar DeadlineExceededError durante el uso de UrlFetch
- 9. ¿Dónde se encuentra el registro de PHPMailer?
- 10. ¿Dónde y cómo se encuentra el software con el hardware?
- 11. Rol de la aplicación SQL Server, rendimiento alcanzado
- 12. Realizar Trim() durante el uso de Split()
- 13. OVER_QUERY_LIMIT durante el uso de google maps
- 14. keyDispatchingTimedOut durante el uso de emulador
- 15. NSLog mensajes durante el uso de Leaks
- 16. ¿Cómo se muestra el cursor de espera durante el inicio de una aplicación WPF?
- 17. dirección remota durante el uso de proxy en socket.io
- 18. ¿El uso de funciones anónimas afecta el rendimiento?
- 19. ¿Cómo determinar cuándo se ha alcanzado el final del archivo?
- 20. Adjuntar EBS durante el inicio de Amazon EC2 Spot Instance
- 21. Declaraciones de cambio: ¿necesita el último descanso? (Javascript principalmente)
- 22. ruptura rendimiento durante el uso de la reflexión $ foo -> $ bar()
- 23. ¿Cuál es la forma correcta de crear un método BUILD en MooseX :: Declare?
- 24. ¿Cuál es la forma correcta de crear un método BUILDARGS utilizando MooseX :: Declare?
- 25. ¿El uso de un marco PHP afecta el rendimiento?
- 26. Mejorar el rendimiento de inicio de ASP.NET MVC
- 27. log4j mensaje de advertencia durante el uso de log4j.xml
- 28. Cómo mejorar el rendimiento de inicio en IIS/ASP.Net
- 29. El quince de febrero no se encuentra
- 30. ¿Cómo se compara el rendimiento del emulador de Android con el rendimiento real del dispositivo?
El golpe de velocidad que observa es el paso make_immutable. Sería lento independientemente de si usa MXD o no; simplemente ocurre por defecto en MXD. – jrockway