2009-11-02 11 views
4

J'ai juste essayé de lancer BeautifulSoup (3.1.0.1) avec Jython (2.5.1) et j'ai été étonné de voir à quel point c'était plus lent que CPython. L'analyse d'une page (http://www.fixprotocol.org/specifications/fields/5000-5999) avec CPython a pris un peu moins d'une seconde (0,844 seconde pour être exact). Avec Jython, il a fallu 564 secondes - presque 700 fois plus.BeautifulSoup avec Jython

Quelqu'un peut-il confirmer ce résultat? Il ne semble pas raisonnable que Jython s'exécute 700 fois plus lentement que CPython. Peut-être que quelque chose ne va pas avec ma configuration.

[Modifier] Voici le code je tester ce (naturellement je l'ai téléchargé le fichier HTML mentionné ci-dessus):

import time 
from BeautifulSoup import BeautifulSoup 
data = open("fix-5000-5999.html").read() 
start = time.time() 
soup = BeautifulSoup(data) 
print time.time() - start 
+2

Veuillez poster votre code source. –

Répondre

6

Je peux confirmer des résultats similaires.

Intel Mac, OS X 10.6.1, Java 1.6.0_15 64 bits, Jython 2.5.1. L'exécution de votre code avec CPython 2.6.1 prend de 0,1 à 0,2 secondes, mais l'exécuter avec Jython prend au moins des dizaines de secondes; Je n'ai pas attendu plus de 30. Il utilise aussi beaucoup de CPU.

J'ai essayé Beautiful Soup 3.0.7a, car il utilise un analyseur différent, mais a eu les mêmes résultats.

Fait intéressant, j'ai essayé d'exécuter votre code sur a different HTML file et cela a bien fonctionné. Mais il semblait toujours beaucoup plus lent que CPython: Jython prenait de 1.02-1.3 secondes; CPython a pris 0.019-0.020.

Je n'ai aucune suggestion à ce stade, sauf que vous devriez envisager de poser cette question sur la liste jython-users; J'ai trouvé la communauté là-bas, qui comprend le développeur principal, pour être réactif et utile.

Bonne chance!

+1

Je suppose que la différence est en taille, le HTML que j'ai utilisé est d'environ 300K et le second que vous avez utilisé est seulement 7K. Merci d'avoir vérifié. – gooli