web-dev-qa-db-fra.com

Pourquoi LuaJIT est-il si bon?

EDIT: malheureusement LuaJIT a été retiré de la comparaison dans le lien ci-dessous.

Cette comparaison des langages de programmation montre que LuaJIT a une amélioration plus de dix fois supérieure à l'implémentation Lua normale. Pourquoi le changement est-il si important? Y a-t-il quelque chose de spécifique à propos de Lua qui lui fait beaucoup bénéficier de la compilation JIT? Python est typé dynamiquement et compilé également en bytecode, alors pourquoi PyPy (qui a JIT maintenant, je crois) ne montre pas un tel bond dans les performances?

53
Mihai

Mike Pall en a parlé à plusieurs endroits:

Comme pour tout système performant, la réponse se résume finalement à deux choses: les algorithmes et l'ingénierie. LuaJIT utilise des techniques de compilation avancées et possède également une implémentation très fine. Par exemple, lorsque les techniques de compilation sophistiquées ne peuvent pas gérer un morceau de code, LuaJIT revient à un interpréteur très rapide écrit en assemblage x86.

LuaJIT obtient deux points sur l'aspect ingénierie, car non seulement LuaJIT lui-même est bien conçu, mais le langage Lua lui-même a une conception plus simple et plus cohérente que Python et JavaScript. Cela le rend (marginalement ) plus facile pour une implémentation de fournir de bonnes performances constantes.

63
Ben Karel