2010-04-02 12 views

Respuesta

15

La razón primordial de que I "m en cuenta es el rendimiento. Escriba dando a entender en clojure elimina la reflexión, lo que puede ralentizar el rendimiento. Así que me gustaría poner toques tipo de funciones que he midió el rendimiento crítico.

Hay una description en la sección de java interoperabilidad en clojure.org Entre las observaciones:..

Clojure admite el uso del tipo de consejos para ayudar a que el compilador para evitar la reflexión en áreas de rendimiento crítico de código Normalmente, se debe evitar el uso de sugerencias de tipo hasta que haya un cuello de botella de rendimiento conocido.

... Una vez que se ha colocado una sugerencia de tipo en un identificador o expresión, el compilador intentará resolver cualquier llamada a métodos a partir de allí en tiempo de compilación. Además, el compilador rastreará el uso de cualquier valor de retorno e inferirá tipos para su uso, y así sucesivamente, por lo que se necesitan muy pocos consejos para obtener una serie de llamadas resueltas en tiempo de compilación. Tenga en cuenta que las sugerencias de tipo no son necesarias para los miembros estáticos (¡o sus valores devueltos!) Ya que el compilador siempre tiene el tipo de estática.

Siempre puede activar el indicador de advertencia en la reflexión para ver dónde se está llamando la reflexión y, en consecuencia, dónde pueden ayudar las sugerencias de tipo.

EDIT:

cuanto a su pregunta "Solo para la interoperabilidad de Java?" --no. Las sugerencias de tipo serán útiles incluso en una aplicación de clojure pura. El problema de la ralentización de la reflexión es una realidad en la JVM, y es un problema que los lenguajes dinámicos deben abordar en general.

En cuanto a consejos, donde tipo se pueden colocar, desde clojure.org:

Se pueden colocar en los parámetros de función, nombres dejar de ruedas, nombres var (cuando se define), y expresiones:

+0

¿Qué es un miembro estático en este contexto? – johnbakers

8

Sé que ya aceptó una respuesta y esta no es una respuesta directa a su pregunta, pero Lau acaba de publicar un artículo muy bueno en Functional Fluid Dynamics in Clojure, que es bastante educativo cuando se trata de sugerencias tipográficas por motivos de rendimiento.

+0

+1 Es un gran artículo. –

+0

404 - el artículo parece haber desaparecido ahora :( – jocull

+1

[máquina de retorno] (https://web.archive.org/web/20100403083120/http://www.bestinclass.dk/index.php/2010/03/ functional-fluid-dynamics-in-clojure /) al rescate! –

Cuestiones relacionadas