¿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?
-
27-09-2019 - |
Pregunta
Cualquier ventaja en la implementació pitón pila-menos de corrutina de Lua? ¿Cuál es la diferencia entre ellos?
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:
- Ligera mayor parte del tiempo.
- ¿Ha planificador para gestionar el cual tasklet get continúa la próxima después de que los actuales rendimientos uno.
- Compatibilidad con derecho preferente de programación. (Es decir, carrera para obtener instrucciones X)
- Los canales de comunicación entre tasklets.
Contras:
- 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:
- Ligera.
- resume () / rendimiento () funciones permiten modelo de consumidor / productor de la comunicación.
Contras:
- No se construyó en el planificador. Hay que gestionar la reanudación y rendimiento corrutinas.
- 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)
- No hay compatibilidad integrada con derecho preferente de programación. (Tendría que usar ganchos de depuración)
Pros:
- Ligera.
- Programador con el cambio de contexto cooperativo.
- tiene estilo Erlang de paso de mensajes entre las tareas de comunicación.
- Soporte para el mensaje distribuido transparente que pasa entre nodos.
Contras:
- 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)
- 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:
- Ligera.
- Programador con el cambio de contexto cooperativo.
- tiene estilo Erlang de paso de mensajes entre las tareas de comunicación.
- Soporte para el mensaje distribuido transparente que pasa entre nodos.
- Soporte JIT muy rápido hace Lua mucho más rápido que Python
Contras:
- no podría ser capaz de producir a partir de una función de C en este momento. Esto se admita en futuras versiones.
- 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