Qual è il vantaggio di stack inferiore MicroThread di Python di coroutine di Lua nell'attuazione macchina dello Stato per il gioco?
-
27-09-2019 - |
Domanda
Ogni vantaggio sulla pila-meno pitone implentation di coroutine di Lua? Qual è la differenza di loro?
Soluzione
stackless pitone e tasklets (non ho fatto alcuna programmazione con Python stackless, ma ho letto alcuni dei dettagli su come viene attuata):
Pro:
- Leggero maggior parte del tempo.
- ha scheduler per gestire che tasklet get Resume Next dopo gli attuali rendimenti uno.
- Supporto per preventiva pianificazione. (Vale a dire di esecuzione per le istruzioni X)
- I canali per la comunicazione tra tasklets.
Contro:
- A volte hanno bisogno di C-stack quando cedere da un tasklet. (Cioè quando cedevole da alcuni callback C)
Lua 5.1 con coroutine pianura:
Pro:
- leggero. funzioni
- resume () / rendimento () permettono modello di consumo / produttore della comunicazione.
Contro:
- Nessun programmatore incorporato. Devi gestire riprendere e cedere coroutine.
- non può cedere da una funzione C, un metamethod, o di un iteratore. (Lua 5.2 rimuoverà la maggior parte di queste restrizioni, LuaJIT 1.1 fornisce leggero commutazione c-stack ottenendo ovunque)
- Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)
Pro:
- leggero.
- Scheduler con commutazione contesto cooperativo.
- ha stile Erlang di message passing comunicazione tra le attività.
- Supporto per il messaggio distribuito trasparente che passa tra i nodi.
Contro:
- non può cedere da una funzione C, un metamethod, o di un iteratore. (Ancora una volta la maggior parte di queste restrizioni vanno-via con Lua 5.2 e LuaJIT)
- Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)
Pro:
- leggero.
- Scheduler con commutazione contesto cooperativo.
- ha stile Erlang di message passing comunicazione tra le attività.
- Supporto per il messaggio distribuito trasparente che passa tra i nodi.
- Supporto JIT molto veloce rende Lua molto più veloce di Python
Contro:
- non potrebbe essere in grado di produrre da una funzione C al momento. Questo potrebbe essere supportato nelle versioni future.
- Nessun supporto integrato Preemptive Pianificazione. (Avrebbe dovuto usare i ganci di debug)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow