Article View: pl.comp.lang.python
Article #26653Re: Wydajność jythona (było Re: python vs php - potrzebne argumenty)
From: Jaroslaw Zabiello
Date: Tue, 24 Nov 2009 11:34
Date: Tue, 24 Nov 2009 11:34
110 lines
5647 bytes
5647 bytes
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.u3wc3kddeaqjf2@jzabielloosx.dubtilt.local>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<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>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:34:22 -0000 Organization: http://onet.pl Lines: 151 Message-ID: <op.u3wc3kddeaqjf2@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> NNTP-Posting-Host: 89.167.220.4 Mime-Version: 1.0 X-Trace: news.onet.pl 1259062467 1672 89.167.220.4 (24 Nov 2009 11:34:27 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Tue, 24 Nov 2009 11:34:27 +0000 (UTC) To: "Marcin Kasperski" <Marcin.Kasperski@mekk.waw.pl> User-Agent: Opera Mail/10.10 (MacIntel) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit