IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Test de performance


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut Test de performance
    Bonjour

    J'ai fais rouler le test suivante sur mon Mac : http://pastie.org/1849334

    Voici le résultat :

    Version officiel disponible sur mon Mac:
    Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
    [GCC 4.2.1 (Apple Inc. build 5646)]
    Len of prime numbers: 19998
    time: 7.402814

    Version installé via Mac Port :
    Python 2.6.6 (r266:84292, Apr 26 2011, 11:44:45)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    Len of prime numbers: 19998
    time: 7.313168

    Dernière release stable 1.4 de PyPy :
    Python 2.5.2 (c407c9dc5382, Dec 22 2010, 03:00:12)
    [PyPy 1.4.1]
    Len of prime numbers: 19998
    time: 0.858498

    Dernière nightly build de la version 1.5 alpha de PyPy :
    Python 2.7.1 (aefc70438132, Apr 29 2011, 10:16:31)
    [PyPy 1.5.0-alpha0 with GCC 4.0.1]
    Len of prime numbers: 19998
    time: 0.448230

    Intéressant non !

    Ça donne quoi sur votre machine ?
    Si vous connaissez d'autres langages pourriez vous convertir mon script dans ceux ci et me les fournir que je puisses les tester sur ma machine et faire un comparatif. Je serai intéressé par la version Php, Ruby et Java.

    Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ma machine : i7 720QM, 4GB de RAM

    Hmm… Mais pourquoi ne pas implémenter complètement l’algo de détection des nombres premiers ? Bon, avec ton code original (légèrement modifié pour passer aussi sous 3.2 – on perd le xrange au profit de range, mais ça fait gagner presque une seconde sous 2.5 et 2.6 ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #
    # Python test performance
    #
     
    import sys, os, time
     
    print('Python %s' % sys.version)
    #print '%s' % os.path.normpath(sys.prefix)
     
    start = time.time()
    primeNumbers = []
    output = ""
     
    for i in range(2, 20000):
        divisible = False
     
        for number in primeNumbers:
            pass
     
        if not divisible:
            primeNumbers.append(i)
     
    print('Len of prime numbers: %d' % len(primeNumbers))
    print('time: %f' % (time.time() - start))
    Ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    i7deb64@debian-i7-amd64:~$ python2.5 ./Bureau/test_org.py 
    Python 2.5.5 (r255:77872, Nov 28 2010, 16:43:48) 
    [GCC 4.4.5]
    Len of prime numbers: 19998
    time: 10.282441
     
    i7deb64@debian-i7-amd64:~$ python2.6 ./Bureau/test_org.py 
    Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
    [GCC 4.4.5]
    Len of prime numbers: 19998
    time: 9.441027
     
    i7deb64@debian-i7-amd64:~$ python3.2 ./Bureau/test_org.py 
    Python 3.2 (r32:88445, Feb 20 2011, 19:50:20) 
    [GCC 4.4.5]
    Len of prime numbers: 19998
    time: 9.157195
     
    i7deb64@debian-i7-amd64:~$ ./PyPy/pypy-1.4.1-linux64/bin/pypy ./Bureau/test_org.py 
    Python 2.5.2 (e503e483e9ac, Dec 21 2010, 12:02:48)
    [PyPy 1.4.1]
    Len of prime numbers: 19998
    time: 1.244701
    Et avec un algo vite fait mais fonctionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #
    # Python test performance
    #
     
    import sys, os, time
     
    print('Python %s' % sys.version)
    #print '%s' % os.path.normpath(sys.prefix)
     
    start = time.time()
    primeNumbers = []
    output = ""
     
    for i in range(2, 20000):
        divisible = False
     
        for number in primeNumbers:
            if number * 2 > i:
                break
            if not (i%number):
                divisible = True
                break
     
        if not divisible:
            primeNumbers.append(i)
     
    print('Len of prime numbers: %d' % len(primeNumbers))
    print('time: %f' % (time.time() - start))
    J’obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    i7deb64@debian-i7-amd64:~$ python2.5 ./Bureau/test.py 
    Python 2.5.5 (r255:77872, Nov 28 2010, 16:43:48) 
    [GCC 4.4.5]
    Len of prime numbers: 2262
    time: 0.534985
     
    i7deb64@debian-i7-amd64:~$ python2.6 ./Bureau/test.py 
    Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
    [GCC 4.4.5]
    Len of prime numbers: 2262
    time: 0.488701
     
    i7deb64@debian-i7-amd64:~$ python3.2 ./Bureau/test.py 
    Python 3.2 (r32:88445, Feb 20 2011, 19:50:20) 
    [GCC 4.4.5]
    Len of prime numbers: 2262
    time: 0.581815
     
    i7deb64@debian-i7-amd64:~$ ./PyPy/pypy-1.4.1-linux64/bin/pypy ./Bureau/test.py
    Python 2.5.2 (e503e483e9ac, Dec 21 2010, 12:02:48)
    [PyPy 1.4.1]
    Len of prime numbers: 2262
    time: 0.079497
    (tous ces timing peuvent varier d’environ +/- 10%…)

    Ben oui, forcément, il calcule un peu plus, mais boucle beaucoup moins !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Salut mont29

    Intéressant tous ça

    J'ai fait le test avec ta version et j'ai rajouté Python 2.7, 3.1 et 3.2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
    [GCC 4.2.1 (Apple Inc. build 5646)]
    Len of prime numbers: 2262
    time: 0.406811
     
    Python 2.6.6 (r266:84292, Apr 26 2011, 11:44:45) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    Len of prime numbers: 2262
    time: 0.374305
     
    Python 2.7.1 (r271:86832, Apr 30 2011, 08:35:53) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    Len of prime numbers: 2262
    time: 0.319625
     
    Python 3.1.3 (r313:86834, Apr 30 2011, 08:42:35) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    Len of prime numbers: 2262
    time: 0.430698
     
    Python 3.2 (r32:88445, Apr 30 2011, 08:31:57) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    Len of prime numbers: 2262
    time: 0.448055
     
    Python 2.5.2 (c407c9dc5382, Dec 22 2010, 03:00:12)
    [PyPy 1.4.1]
    Len of prime numbers: 2262
    time: 0.045515
     
    Python 2.7.1 (aefc70438132, Apr 29 2011, 10:16:31)
    [PyPy 1.5.0-alpha0 with GCC 4.0.1]
    Len of prime numbers: 2262
    time: 0.037226
    Ce qui est intéressant c'est de voir que les versions de Python 3.x sont moins performantes que les version 2.6 et 2.7 !

    De mon coté j'ai oublié de mentionner les caractéristiques de la machine sur laquelle je fais mes tests :

    Model Name: Mac Pro
    Model Identifier: MacPro5,1
    Processor Name: 6-Core Intel Xeon
    Processor Speed: 2.93 GHz
    Number Of Processors: 2
    Total Number Of Cores: 12
    L2 Cache (per core): 256 KB
    L3 Cache (per processor): 12 MB
    Memory: 24 GB
    Processor Interconnect Speed: 6.4 GT/s
    Ce Mac fonctionne sous Snow Leopard 10.6.7.
    C'est une sacré machine !

    Le test en lui-même ne tire pas profit de toute la puissance à disposition mais d'un autre coté c'est pas plus mal car ça permet de plus facilement comparer avec d'autres machines

    Tu peux donner un peu plus d'info sur ton Linux et ton ordi ?

    Si tu veux tester avec PyPy 1.5 tu trouveras les Nightly build à cette adresse : http://buildbot.pypy.org/nightly/trunk/

    Sais tu où l'on peut trouver les sources de ce test pour les langages Php, Ruby et Java ? Dans l'idéale il faudrait aussi le faire en C.
    Ça permettrai de situer Python par rapport aux autres langages.

    Pour ceux qui lisent ce post :
    Si vous avez Python installé sur Windows pouvez vous faire le test ? Ça nous permettra de voir si le système d'exploitation a un incidence ou pas. Indiquez aussi les caractéristiques de votre machine.

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Hello,

    OS: Windows 7 SP1 (64 bits)
    CPU: Intel Core I7 960 (4 cores physiques ; 8 logiques)
    Memoire: 8Go

    Iron python 2.7 Beta 2 / 2.7 Final ; CPython 2.7 / 3.2

    # 32 bits
    Python 2.7.0 (IronPython 2.7 Beta 2 (2.7.0.20) on .NET 4.0.30319.225)
    Len of prime numbers: 19998
    time: 2.886154

    # 32 bits
    Python 2.7.0 (IronPython 2.7 (2.7.0.40) on .NET 4.0.30319.225)
    Len of prime numbers: 19998
    time: 2.305130

    # 64 bits
    Python 2.7.0 (IronPython 2.7 (2.7.0.40) on .NET 4.0.30319.225)
    Len of prime numbers: 19998
    time: 3.041176

    # CPython 32 bits
    Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
    Len of prime numbers: 19998
    time: 7.148000

    # CPython 64 bits
    Python 3.2 (r32:88445, Feb 20 2011, 21:30:00) [MSC v.1500 64 bit (AMD64)]
    Len of prime numbers: 19998
    time: 7.561000

    # Pypy 32 bits
    Python 2.7.1 (aefc70438132+, Apr 29 2011, 12:45:42)
    [PyPy 1.5.0-alpha0 with MSC v.1600 32 bit]
    Len of prime numbers: 19998
    time: 0.445000

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Salut Neitsa

    Merci pour ton test

    Iron Python est moins bon que PyPy mais se défend mieux que la version officielle de Python
    Intéressant...

    Tous les tests à date semblent démontrer que Python 3.x et moins bon que les versions Python 2.x. Plutôt moche

    Pourrais tu essayer d'installer la version Windows de PyPy 1.5 et faire le test avec ? (tu peux la télécharger ici)

  6. #6
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ah bah oui, tiens, salut, zelegolas2

    Yep, le PyPy 1.5 est encore plus rapide (quasiment dix fois plus que CPython, en fait) :

    avec ton code d’origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i7deb64@debian-i7-amd64:~$ ./PyPy/pypy-c-jit-43780-b590cf6de419-linux64/bin/pypy ./Bureau/test_org.py 
    Python 2.7.1 (b590cf6de419, Apr 30 2011, 02:00:34)
    [PyPy 1.5.0-alpha0 with GCC 4.4.3]
    Len of prime numbers: 19998
    time: 0.999525
    Et avec le mien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i7deb64@debian-i7-amd64:~$ ./PyPy/pypy-c-jit-43780-b590cf6de419-linux64/bin/pypy ./Bureau/test.py 
    Python 2.7.1 (b590cf6de419, Apr 30 2011, 02:00:34)
    [PyPy 1.5.0-alpha0 with GCC 4.4.3]
    Len of prime numbers: 2262
    time: 0.058382
    Ma machine :
    * i7 720QM (4 cores / 8 threads, 1.6GHz de base, 256K/6M de L2/L3)
    * 4Go RAM
    * Debian Testing amd64

    À propos de python 3.2, c’est de notoriété publique qu’il est plus lent que la branche 2.x – ils ont déjà bien amélioré les choses, mais c’est sûr qu’il reste du travail de ce côté-là…

    PS*: T’as un monstre, comme machine… Surtout chez Mac, elle doit valoir autant qu’une petite voiture !

Discussions similaires

  1. Faites vos tests de performance avec nmon sous Aix
    Par Katyucha dans le forum Contribuez
    Réponses: 1
    Dernier message: 27/03/2007, 17h17
  2. Teste de performance MSDE ou SQL server EXpress
    Par mahboub dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/12/2006, 09h34
  3. [MySQL] Test de performance général sur une application PHP
    Par Invité dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/06/2006, 17h36
  4. Réponses: 1
    Dernier message: 17/06/2006, 09h08
  5. [9iR2] : Test de performance
    Par debutant_oracle dans le forum Oracle
    Réponses: 2
    Dernier message: 22/02/2006, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo