La performance colpisce con l'utilizzo di MooseX :: Declare principalmente rilevato mentre fa la sua magia iniziale (cioè "tradurre" la definizione in sintassi Perl standard)? Ad esempio, una volta completata la compilazione e la configurazione iniziale del runtime, c'è una differenza di prestazioni nel chiamare un metodo MooseX :: Declare rispetto a un metodo definito tramite la dichiarazione tradizionale?La performance colpisce con l'uso di MooseX :: Declare principalmente durante l'avvio?
risposta
La risposta è sì e no. Poiché MooseX :: Declare utilizza MooseX::Method::Signatures per eseguire il disimballaggio dei parametri e la convalida, è presente un sovraccarico di runtime rispetto ai parametri di non convalida.
Ma se la vostra idea di "dichiarazione tradizionale" comprende convalidare il numero e il tipo dei vostri parametri (e dovrebbe, se si desidera codice robusto) allora non c'è motivo di pensare che il MXD validazione/MXMS non sarebbe qualsiasi più lento della convalida che faresti tu stesso.
Grazie per la risposta. Solitamente eseguo alcune convalide dei parametri, ma non all'ennesima potenza, suppongo di prendere l'approccio Perlish di molti altri sviluppatori Perl. Immagino che cosa mi piace di MooseX :: Declare è che la sintassi promuove la leggibilità come qualsiasi altra cosa. –
MooseX :: Declare è una conversione momento della compilazione della sintassi dichiarativa "true" codice Perl. Tutto il suo sovraccarico è in fase di compilazione.
L'overhead runtime di cui parli sarebbe convalida del tipo Moose e coercizione. Entrambi sono facoltativi: non è necessario specificare un qualificatore di tipo e non è necessario specificare is coerce
. Se non ne usi nessuno, la tua performance di runtime dovrebbe essere molto simile a quella che sarebbe senza la magia di MooseX :: Declare.
Quindi, in termini di esecuzione, è win/win. Paghi solo per le funzioni che usi. La convalida del tipo è qualcosa che dovresti fare manualmente in ogni caso, e la coercizione, mentre sicuramente un colpo di performance, è abilitata su una base per argomento.
- 1. MooseX :: Declare richiede che '{' sia sulla stessa riga del 'metodo'?
- 2. Come si dichiara che una classe utilizza più di un ruolo con MooseX :: Declare?
- 3. Posso definire funzioni al di fuori di una classe usando MooseX :: Declare?
- 4. Qual è il modo corretto di creare un metodo BUILD in MooseX :: Declare?
- 5. Quando Cassandra colpisce la legge di Amdahl?
- 6. Hibernate HQL colpisce solo la cache di sessione
- 7. declare la variabile in una funzione sql
- 8. MySQL Query: la performance
- 9. String.comparison performance (con trim)
- 10. Declare variabile Trigger MySQL
- 11. problema con mixins in un MooseX :: classe NonMoose
- 12. Scarsa performance di Django ORM con Oracle
- 13. Docker - server che colpisce EOF
- 14. Libreria Android Declare-Styleable Errore di runtime
- 15. Perché "declare -f" e "declare -a" sono necessari negli script di bash?
- 16. Buono strumento di performance F #
- 17. Perché Firebug colpisce punti di interruzione inesistenti?
- 18. Errore di sintassi su DECLARE CURSOR FOR
- 19. La query HQL colpisce sempre il database e ottiene risultati?
- 20. Haskell Performance di Esempio
- 21. JRuby Performance
- 22. Prestazioni AndroidProvider Performance
- 23. EASTL performance
- 24. glFramebufferTexture2D performance
- 25. performance log4j
- 26. clipToBounds and masksToBounds performance issue
- 27. performance listener di eventi Javascript
- 28. PacMan: quali tipi di euristica vengono principalmente utilizzati?
- 29. Z3 Performance con aritmetica non lineare
- 30. Scene Kit Performance con test del cubo
Il colpo di velocità che si nota è il passaggio make_immutable. Sarebbe lento indipendentemente dal fatto che tu usi o meno MXD; succede semplicemente per default in MXD. – jrockway