¿Cuál es el impacto en el rendimiento del uso de métodos múltiples? Si tengo 2 funciones con el mismo nombre y la misma cantidad de argumentos que difieren solo por el tipo (lista vs. int), ¿mi rendimiento va a sufrir mucho?Rendimiento de multimétodos
En otras palabras, es mejor nombrar mi función de adición de vectores: "add-vector" o dejarlo como "agregar" o posiblemente "+"?
(En aras de la simplicidad, ignoremos los problemas que pueda tener al redefinir funciones incorporadas como "+").
me contestarían en lugar del comentario, pero ya que no se refiere a clojure en concreto, métodos múltiples no debe incurrir en ninguna penalización adicional de las búsquedas normales. Es decir, una de las estrategias de implementación es modificar los nombres que los codifican con tipos de argumentos, y luego no debería haber gastos generales. Sin embargo, la estrategia de implementación que utiliza Clojure es desconocida para mí, pero si utiliza el mecanismo anterior, no habrá gastos adicionales. – jer
Sí, dado que clojure es un lenguaje dinámico, no creo que sea lo mismo. Además, clojure utiliza una función de despacho que genera claves que se aplican a una lista de funciones disponibles. –
Es posible que desee examinar 'clojure.contrib.generic' y' clojure.contrib.generic. * '(' C.c.generic.arithmetic' será lo más interesante para usted). –