¿Cuál es la ventaja de pila-MicroThread menos de Python que corrutina de Lua en la implementación máquina de estados para el juego?

StackOverflow https://stackoverflow.com/questions/4064594

Pregunta

Cualquier ventaja en la implementació pitón pila-menos de corrutina de Lua? ¿Cuál es la diferencia entre ellos?

¿Fue útil?

Solución

pitón sin pérdida de velocidad y tasklets (que no he hecho ningún tipo de programación con Python sin pérdida de velocidad, pero he leído algunos de los detalles acerca de cómo se implementa):

Pros:

  1. Ligera mayor parte del tiempo.
  2. ¿Ha planificador para gestionar el cual tasklet get continúa la próxima después de que los actuales rendimientos uno.
  3. Compatibilidad con derecho preferente de programación. (Es decir, carrera para obtener instrucciones X)
  4. Los canales de comunicación entre tasklets.

Contras:

  1. A veces necesita C-pila al ceder a partir de un tasklet. (Es decir, al ceder de algunas devoluciones de llamada C)

Lua 5.1 con corrutinas llano:

Pros:

  1. Ligera.
  2. resume () / rendimiento () funciones permiten modelo de consumidor / productor de la comunicación.

Contras:

  1. No se construyó en el planificador. Hay que gestionar la reanudación y rendimiento corrutinas.
  2. No se puede producir a partir de una función de C, un metamétodo, o un iterador. (LUA 5,2 eliminará la mayor parte de estas restricciones, LuaJIT 1.1 proporciona una conmutación c-pila de peso ligero para producir desde cualquier lugar)
  3. No hay compatibilidad integrada con derecho preferente de programación. (Tendría que usar ganchos de depuración)

ConcurrentLua :

Pros:

  1. Ligera.
  2. Programador con el cambio de contexto cooperativo.
  3. tiene estilo Erlang de paso de mensajes entre las tareas de comunicación.
  4. Soporte para el mensaje distribuido transparente que pasa entre nodos.

Contras:

  1. No se puede producir a partir de una función de C, un metamétodo, o un iterador. (De nuevo la mayoría de estas restricciones go-away con Lua 5.2 y LuaJIT)
  2. No hay compatibilidad integrada con derecho preferente de programación. (Tendría que usar ganchos de depuración)

LuaJIT 2,0 Beta con ConcurrentLua :

Pros:

  1. Ligera.
  2. Programador con el cambio de contexto cooperativo.
  3. tiene estilo Erlang de paso de mensajes entre las tareas de comunicación.
  4. Soporte para el mensaje distribuido transparente que pasa entre nodos.
  5. Soporte JIT muy rápido hace Lua mucho más rápido que Python

Contras:

  1. no podría ser capaz de producir a partir de una función de C en este momento. Esto se admita en futuras versiones.
  2. No hay compatibilidad integrada con derecho preferente de programación. (Tendría que usar ganchos de depuración)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top