Pregunta

He aquí un extracto de la Entrada de la Wikipedia sobre K lenguaje de programación:

El pequeño tamaño de la intérprete y compacto de la sintaxis de la lengua hace que sea posible para K las aplicaciones para que se ajuste totalmente en el nivel 1 de la caché del procesador.

Lo que, en particular, hace K programas tan pequeño?Cuando uno utiliza ' operador en K, map en el compilado de un lenguaje funcional como Haskell, o equivalente for bucle en un compilado imperativo de un lenguaje como C, no me puedo imaginar a cualquiera de compilador de la generación de radicalmente diferentes asamblea código o que lo que sucede en el intérprete de la interna será muy diferente de for loop.Hay algo en especial en K que hace que su tiempo de ejecución y programas tan pequeño?

Hay una similar pregunta en TAN, pero las respuestas, básicamente, aclarar nada.

¿Fue útil?

Solución

Hay maneras de generar un equipo muy compacto código.Por ejemplo, un http://en.wikipedia.org/wiki/Threaded_code de Vuelta y por igual.Es probable que los K se compila en una cierta forma de ella.

Otros consejos

Yo no soy el autor de la wikipedia declaración anterior, sólo alguien que utiliza K ampliamente.

Como para el código, K no es desenrollado de bucles o hacer otros cambios a la estructura del programa que iba a aumentar en tamaño más allá de lo que usted está esperando.El ejecutable de intérprete en sí es muy pequeña.Y de los programas que tienden a ser pequeñas (aunque no necesariamente).No es la ejecución de todas las instrucciones particulares para la asignación, etc.que hacen más probable que el propio código se va a ejecutar todos dentro de la memoria caché.

K programas tienden a ser pequeñas, ya que son un pequeño, apretado de código de bytes de almacenamiento, y su sintaxis tiende a producir cantidades muy pequeñas de código para una operación dada.

Comparar este programa en Java:

int r=0;
for(int i=0; i<100; i++) {
  r+=i;
}

Contra esta K programa para producir el mismo resultado:

+/!100

La cantidad de código que se ejecuta es similar, pero el almacenamiento requerido por el programa (y mucho menos a escribir!) es mucho menos.K es ideal para aquellos con lesiones por estrés repetitivo.

Como de los datos, el estímulo para trabajar en varios elementos de datos con solo instrucciones tiende a hacer que el acceso secuencial, de una manera amigable para el caché, en lugar de acceso aleatorio.Todo esto simplemente hace que sea más probable que el programa será de caché de usar.

Pero todo esto es sólo tendencias y mejores prácticas dentro de la lengua en combinación con el K ejecutable en sí.Si usted enlace en grandes cantidades de código adicional, caso especial de un montón de funciones, y aleatorizar los índices antes de acceder a sus datos, el programa va a ser tan hostil a la caché como sería de esperar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top