🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26654

Re: Wydajność jythona (było Re: python vs php - potrzebne argumenty)

#26654
From: Jaroslaw Zabiello
Date: Tue, 24 Nov 2009 11:41
157 lines
6634 bytes
Dla odmiany inny prosty mikrobenchmark. Liczenie ciągu Fibonacciego. Tym  
razem CPython przegrywa z Jythonem.


# -*- coding: utf-8 -*-
 from timeit import time

def fib(n):
   if n <= 1: return n
   return fib(n - 1) + fib(n - 2)
for i in range(10):
   t = time.time()
   fib(35)
   print(time.time()-t)


$ python fibonacci.py
5.6540749073
5.64278578758
5.63702011108
5.62101387978
5.63334298134
5.647179842
5.62858891487
5.63060092926
5.62489700317
5.64799690247

$ jython -J-server fibonacci.py
4.79199981689
4.03499984741
4.03300023079
4.02399992943
3.99699997902
4.00100016594
3.99699997902
3.99900007248
4.00200009346
3.99799990654


On Tue, 24 Nov 2009 11:34:22 -0000, Jaroslaw Zabiello <usenet@onet.eu>  
wrote:

> On Tue, 24 Nov 2009 10:08:49 -0000, Marcin Kasperski  
> <Marcin.Kasperski@mekk.waw.pl> wrote:
>
>>>  * Jython - kilka razy szybszy od CPython, tylko trochę wolniejszy od
>>> zwykłej Javy
>>
>> To jest zwyczajna nieprawda, przynajmniej w ogólności. Robiłem parę
>> prostych benchmarków (dla kodu "algorytmicznego") i Jython był znacznie
>> *wolniejszy* od CPythona. Przykładowo, kawałek skryptu liczącego liczby
>> pierwsze sitem jest na jythonie sześć razy wolniejszy:
>>
>> $ time python pierwsze.py
>> Jest 348514 liczb pierwszych mniejszych od 5000000
>>
>> real	0m1.521s
>> user	0m1.464s
>> sys	0m0.032s
>>
>> $ time jython pierwsze.py
>> Jest 348514 liczb pierwszych mniejszych od 5000000
>>
>> real	0m9.596s
>> user	0m10.441s
>> sys	0m0.256s
>>
>> $ python
>> Python 2.6.4 (r264:75706, Nov  2 2009, 14:38:03)
>> [GCC 4.4.1] on linux2
>>
>> $ jython
>> Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54)
>> [Java HotSpot(TM) Server VM (Sun Microsystems Inc.)] on java1.6.0_16
>
> Doliczyłeś start JVM, i nawet nie rozgrzałeś HotSpota. Takie testowanie  
> to o kant dupy potłuc.
>
> Odpaliłem to samo na MacPro zwiększając tylko ilość iteracji i dodałem  
> wew. pętlę aby dać szansę się rozgrzać HotSpotowi. Zobacz jak  
> przyśpiesza w kolejnych wywołaniach.
>
> [...]
> import time.time
> MAX = 10000000
> for i in range(10):
>      t = time.time()
>      primes = primes_up_to_sieve_odd(MAX)
>      czas = time.time() - t
>      print("Jest %d liczb pierwszych mniejszych od %d" % (len(primes),  
> MAX), " czas: %s" % czas)
>
> $ python
> Python 2.6.4 (r264:75706, Nov 13 2009, 09:31:24)
> [GCC 4.2.1 (Apple Inc. build 5646)] on darwin
>
>
> $ jython
> Jython 2.5.1+ (trunk:6949, lis 24 2009, 11:11:03)
> [Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_15
>
> $ python prime.py
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.79573392868')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.81609916687')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.79001808167')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.77355098724')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.78277993202')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.7743229866')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.83567595482')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.77783703804')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.921875')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.79439401627')
>
> $ jython -J-server prime.py
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 10.7590000629')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 8.79200005531')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 2.95500016212')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.8710000515')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.31699991226')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.40400004387')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.56200003624')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.48500013351')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.32299995422')
> ('Jest 664579 liczb pierwszych mniejszych od 10000000', ' czas:  
> 3.4279999733')
>
> CPython jest w tym mikrobenchmarku szybszy, ale niedużo. Pewnie w innych  
> będzie szybszy. A to jeszcze nie wszystko na co stać Jythona! Po  
> pierwsze,  nie jest jeszcze porządnie zoptymalizowany, to wciąż wersja  
> rozwojowa a nie stabilna. Po drugie, JDK7 powinno dać mu dodatkowego  
> kopa, bo wprowadza optymalizacje dla języków dynamicznych.
>


-- 
JZ http://blog.zabiello.com
Technical Details
Message-ID: <op.u3wdfrm6eaqjf2@jzabielloosx.dubtilt.local>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
References: <h83in7$rl3$1@inews.gazeta.pl> <op.u3ngjef4eaqjf2@jzabielloosx.dubtilt.local> <ebb48508-1e60-47a3-87ab-8b4ccebeeba0@a32g2000yqm.googlegroups.com> <op.u3nkjowaeaqjf2@jzabielloosx.dubtilt.local> <17047610-9db9-47fc-9d8f-c476d2009b37@s15g2000yqs.googlegroups.com> <op.u3ore7useaqjf2@macbook-pro-15-zbiru.local> <1ed24c15-19ff-4a55-872c-ed0ecc3302c9@p8g2000yqb.googlegroups.com> <221dc55c-d636-44f1-bf11-c437e392aa69@j19g2000yqk.googlegroups.com> <he7dc2$q7s$1@news.lublin.pl> <3d4aa257-cd86-4220-9917-e7ff6af41193@d5g2000yqm.googlegroups.com> <556ac98b-668b-4b4a-8373-46ed23c0735d@o31g2000vbi.googlegroups.com> <2986fd9f-56a1-41b9-811e-4f27a4b1a8ac@o13g2000vbl.googlegroups.com> <fb102619-d0ae-46de-9078-55561f655075@33g2000vbe.googlegroups.com> <7cf465d2-a344-4a63-9fbc-a8e2d5c72e90@v37g2000vbb.googlegroups.com> <0477cb5d-8df9-4ac6-a8f3-00dd75dc9b61@33g2000vbe.googlegroups.com> <87bpis9qvi.fsf_-_@mekk.waw.pl> <op.u3wc3kddeaqjf2@jzabielloosx.dubtilt.local>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: "Jaroslaw Zabiello" <usenet@onet.eu>
Newsgroups: pl.comp.lang.python
Subject: Re: Wydajność jythona (było
 Re: python vs php - potrzebne argumenty)
Date: Tue, 24 Nov 2009 11:41:41 -0000
Organization: http://onet.pl
Lines: 202
Message-ID: <op.u3wdfrm6eaqjf2@jzabielloosx.dubtilt.local>
References: <h83in7$rl3$1@inews.gazeta.pl> <op.u3ngjef4eaqjf2@jzabielloosx.dubtilt.local> <ebb48508-1e60-47a3-87ab-8b4ccebeeba0@a32g2000yqm.googlegroups.com> <op.u3nkjowaeaqjf2@jzabielloosx.dubtilt.local> <17047610-9db9-47fc-9d8f-c476d2009b37@s15g2000yqs.googlegroups.com> <op.u3ore7useaqjf2@macbook-pro-15-zbiru.local> <1ed24c15-19ff-4a55-872c-ed0ecc3302c9@p8g2000yqb.googlegroups.com> <221dc55c-d636-44f1-bf11-c437e392aa69@j19g2000yqk.googlegroups.com> <he7dc2$q7s$1@news.lublin.pl> <3d4aa257-cd86-4220-9917-e7ff6af41193@d5g2000yqm.googlegroups.com> <556ac98b-668b-4b4a-8373-46ed23c0735d@o31g2000vbi.googlegroups.com> <2986fd9f-56a1-41b9-811e-4f27a4b1a8ac@o13g2000vbl.googlegroups.com> <fb102619-d0ae-46de-9078-55561f655075@33g2000vbe.googlegroups.com> <7cf465d2-a344-4a63-9fbc-a8e2d5c72e90@v37g2000vbb.googlegroups.com> <0477cb5d-8df9-4ac6-a8f3-00dd75dc9b61@33g2000vbe.googlegroups.com> <87bpis9qvi.fsf_-_@mekk.waw.pl> <op.u3wc3kddeaqjf2@jzabielloosx.dubtilt.local>
NNTP-Posting-Host: 89.167.220.4
Mime-Version: 1.0
X-Trace: news.onet.pl 1259062906 2995 89.167.220.4 (24 Nov 2009 11:41:46 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Tue, 24 Nov 2009 11:41:46 +0000 (UTC)
To: "Jaroslaw Zabiello" <usenet@onet.eu>
User-Agent: Opera Mail/10.10 (MacIntel)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit