C'est curieux de vouloir comparer la vitesse de l'interpréteur Python avec qemu qui n'est pas loin de la vitesse de 100% sur x86.
Heu, c'est toi qui as commencé à parler de qemu, pas moi. Je disais au contraire que les instructions émulées n'ont rien à voir en terme de complexité.
Quant à n'être pas loin de 100% sur x86, n'est-ce pas simplement parce qu'il n'y a pas de traduction du tout et que le code userspace est exécuté nativement ?
Pour un seul bytecode, combien d'instruction à exécuter avec le dispatch ?
Je n'en sais rien, ça dépend du bytecode et aussi du compilateur qui a généré l'interpréteur :-)
Les instructions les plus simples (POP_TOP, DUP_TOP...) doivent se ramener à une vingtaine d'instructions assembleur je pense.
Les instructions les plus complexes peuvent être arbitrairement longues. Mais même un simple appel à l'opérateur + (BINARY_ADD) peut impliquer des choses pas triviales.
La liste unladen-swallow parle un peu de ce que tu proposes, il y a apparemment eu un projet sous le nom de "Python2C". Voici ce que dit un des intervenants à son sujet :
« FWIW, the anecdotal evidence I've seen pointed to a more modest speed
boost in the range of 15-30%, but I can also believe 2x in certain
workloads. »
[^] # Re: Simples precisions
Posté par Antoine . En réponse à la dépêche Le projet Unladen Swallow vise à accélérer Python d'un facteur 5. Évalué à 2.
Heu, c'est toi qui as commencé à parler de qemu, pas moi. Je disais au contraire que les instructions émulées n'ont rien à voir en terme de complexité.
Quant à n'être pas loin de 100% sur x86, n'est-ce pas simplement parce qu'il n'y a pas de traduction du tout et que le code userspace est exécuté nativement ?
Pour un seul bytecode, combien d'instruction à exécuter avec le dispatch ?
Je n'en sais rien, ça dépend du bytecode et aussi du compilateur qui a généré l'interpréteur :-)
Les instructions les plus simples (POP_TOP, DUP_TOP...) doivent se ramener à une vingtaine d'instructions assembleur je pense.
Les instructions les plus complexes peuvent être arbitrairement longues. Mais même un simple appel à l'opérateur + (BINARY_ADD) peut impliquer des choses pas triviales.
La liste unladen-swallow parle un peu de ce que tu proposes, il y a apparemment eu un projet sous le nom de "Python2C". Voici ce que dit un des intervenants à son sujet :
« FWIW, the anecdotal evidence I've seen pointed to a more modest speed
boost in the range of 15-30%, but I can also believe 2x in certain
workloads. »
http://groups.google.com/group/unladen-swallow/browse_thread(...)