Bu arada ben kodları bir milyona kadar olan asalları bulacak şekilde değiştirdim.
07 Ocak 2010 18:20 tarihinde Alper KANAT <[email protected]> yazdı: > Python VM içinde mi çalışıyor? > > --- > Quis custodiet ipsos custodes? > > > 07 Ocak 2010 18:19 tarihinde anıl özselgin <[email protected]>yazdı: > > Beyler python kodu 10000'e (yazıyla onbin) kadar asalları bulurken, php >> 100000'e (yazıyla yüzbin) kadar asalları buluyor. >> >> Biliyorsunuz python virtual machine üzerinde çalışıyor fakat php direk >> olarak C extension'larını çağırarak hesaplamaları yaptırıyor. Dolayısıyla >> php biraz daha iyi performans gösterir. >> >> Kodları optimize ederek tekrar yazdım, asal sayı bulurken sayıyı >> karekökünden yukarıdaki sayılara bölmek anlamsız olduğu için bu kontrolleri >> ekledim. Sonuçları aşağıda görebilirsiniz, php dediğim nedenlerden ötürü >> biraz daha hızlı. >> >> an...@db05:~/public_html/sahi$ time php test.php >> 78498 >> real 0m35.846s >> user 0m35.790s >> sys 0m0.060s >> >> an...@db05:~/public_html/sahi$ time python test.py >> 78498 >> real 0m39.011s >> user 0m38.980s >> sys 0m0.030s >> an...@db05:~/public_html/sahi$ >> >> ########################################### >> >> <?php >> $primeNumbers = array(); >> >> for ($i = 2; $i < 1000000; $i++) >> { >> $divisible = false; >> $sqrt = sqrt($i); >> foreach ($primeNumbers as $number) >> { >> if ($number > $sqrt ){ >> break; >> } >> elseif ($i % $number == 0) >> { >> $divisible = true; >> } >> } >> >> if ($divisible == false) >> { >> $primeNumbers[] = $i; >> } >> } >> >> echo sizeof($primeNumbers); >> >> ?> >> >> >> >> ######################################### >> >> >> #!/usr/bin/python >> # -*- coding: utf-8 -*- >> import math >> primeNumbers = [] >> >> for i in range(2, 1000000): >> divisible = False >> sqrt = math.sqrt(i) >> >> for number in primeNumbers: >> if sqrt < number: >> break >> if i % number == 0: >> divisible = True >> >> if divisible == False: >> primeNumbers.append(i) >> >> print str(len(primeNumbers)) >> >> >> >> >> >> >> >> 07 Aralık 2009 02:36 tarihinde aşkın yollu <[email protected]> yazdı: >> >>> >>> >>> 2009/12/7 aşkın yollu <[email protected]> >>> >>> >>>> >>>> 2009/12/6 Ozgur Batur <[email protected]> >>>> >>>> Threadlerin başlıkları farklı devam ettiği için Barış beyin attığı >>>>> düzeltmeyi görmemişim. Python scriptinde range 10000 değil 100000 >>>>> olacak, denerken ben de dikkat etmemişim. Düzeltme ile: >>>>> >>>>> python test.py: >>>>> Başlangıç = 1260123258.11 >>>>> Bitiş = 1260123340.4 >>>>> Süre =~82.29 >>>>> >>>>> Php %50 olamasa da %35 daha hızlı çıktı, nedeni diğer threadde >>>>> tartışılan konular olabilir. time konusunda haklısınız, programın >>>>> içinden ölçmekten çok daha sağlıklı olacaktır. >>>>> >>>>> 2009/12/6 Mehmet Salih YILDIRIM <[email protected]>: >>>>> > Bu kadar fark olmaması lazım bence. Yorumlayıcıların yaptıkları >>>>> > optimizasyonları bilmediğimden kesin birşey diyemeyeceğim ancak, >>>>> > fiziksel zamanı ölçmek yerine cputime değerine bakmak lazım gelir. Şu >>>>> an >>>>> > yaptığınız işlemde preemption dolayısı ile eşzamanlı çalışan diğer >>>>> > process ler de çalışma süresini etkilerler. Ama bir process'in cpu >>>>> > üzerinde ne kadar süre running durumunda kaldığı tam olarak >>>>> > karşılaştırılabilecek veridir. Bu yüzden bu şekilde karşılaştırmak >>>>> yerine >>>>> > >>>>> > "time python test.py" komutu ile "time php test.php" komutlarını >>>>> kullanınız. >>>>> > >>>>> > Ozgur Batur wrote: >>>>> >> Merhaba, >>>>> >> >>>>> >> Pazar akşamı yapacak bir işim yok :) >>>>> >> Scriptleri birebir denedim: >>>>> >> >>>>> >> python test.py: >>>>> >> Başlangıç = 1260120673.71 >>>>> >> Bitiş = 1260120674.85 >>>>> >> Süre =~1.14 >>>>> >> >>>>> >> php test.php: >>>>> >> Başlangıç = 1260120770.21 >>>>> >> Bitiş = 1260120831.07 >>>>> >> Süre = ~60.86 >>>>> >> >>>>> >> Kullandığım python sürümü: 2.6.4rc2 >>>>> >> Php sürümü: PHP 5.2.10-2ubuntu6.3 with Suhosin-Patch 0.9.7 (cli), >>>>> Zend >>>>> >> Engine v2.2.0 >>>>> >> >>>>> >> Sonuç python phpden yaklaşık 53 kat daha hızlı çıktı. Üstelik >>>>> >> verdiğiniz python scriptinde output ekrana basılmasına rağmen php >>>>> >> scriptinde echo kapalı. Ya bilmediğim çok hızlı bir php yorumlayıcı >>>>> >> kullanıyorsunuz, ya da yapılandırmanızda bir problem var. >>>>> >> >>>>> >> İyi günler, >>>>> >> >>>>> >> 2009/12/5 Baris <[email protected]>: >>>>> >> >>>>> >>> Merhaba arkadaşlar bu sabah çok ilginç bir durum ile karşılaştım >>>>> mod_python >>>>> >>> ile ile ilgili internette gelişmelere bakarken, şöyle iki kod >>>>> parçacığı >>>>> >>> gözüme takıldı, konsoldan calıştırılan ve 2 ile 100000 arası asal >>>>> sayıları >>>>> >>> bulamak üzere yazılmış python betiği, yine aynı amaç için yazılmış >>>>> php >>>>> >>> betiğinden %50 daha yavaş çalışmakta olduğunu sınadım. Nedenini >>>>> >>> açıklayabilecek arkadaşlar açıklamada bulunabilirse sevinirim. >>>>> >>> >>>>> >>> Python için; >>>>> >>> >>>>> >>> #!/usr/bin/python >>>>> >>> # -*- coding: utf-8 -*- >>>>> >>> import time >>>>> >>> print time.time() >>>>> >>> primeNumbers = [] >>>>> >>> output = [] >>>>> >>> >>>>> >>> for i in range(2, 10000): >>>>> >>> divisible = False >>>>> >>> for number in primeNumbers: >>>>> >>> if i % number == 0: >>>>> >>> divisible = True >>>>> >>> >>>>> >>> if divisible == False: >>>>> >>> primeNumbers.append(i) >>>>> >>> output.append(str(i)) >>>>> >>> >>>>> >>> print ' '.join(output) >>>>> >>> >>>>> >>> print time.time() >>>>> >>> >>>>> >>> ---------------------------------------- >>>>> >>> >>>>> >>> Php için: >>>>> >>> >>>>> >>> <?php >>>>> >>> echo microtime(true) ."\n"; >>>>> >>> $primeNumbers = array(); >>>>> >>> $output = ''; >>>>> >>> >>>>> >>> for ($i = 2; $i < 100000; $i++) >>>>> >>> { >>>>> >>> $divisible = false; >>>>> >>> foreach ($primeNumbers as $number) >>>>> >>> { >>>>> >>> if ($i % $number == 0) >>>>> >>> { >>>>> >>> $divisible = true; >>>>> >>> } >>>>> >>> } >>>>> >>> >>>>> >>> if ($divisible == false) >>>>> >>> { >>>>> >>> $primeNumbers[] = $i; >>>>> >>> $output .= $i; >>>>> >>> } >>>>> >>> } >>>>> >>> >>>>> >>> #echo $output; >>>>> >>> echo "\n" . microtime(true) ."\n"; >>>>> >>> ?> >>>>> >>>> >>>> Bende daha ilginç bi durum var, python kısa bir sürede tamamlarken, php >>>> çook uzun sürüyor, henüz php betiğinin tamamlandığını daha görmedim. >>>> Yapılandırmayla ilgili sorunlar olabilir. >>>> >>>> Bu arada kodların biraz iyileştirmeye ihtiyacı var :) >>>> >>>> >>> Sonunda bitti :) >>> >>> time php -f asal.php >>> real 3m36.432s >>> user 3m30.674s >>> sys 0m0.520s >>> >>> time python asal.py >>> real 0m3.681s >>> user 0m3.628s >>> sys 0m0.008s >>> >>> Python yaklaşık 70 kat daha hızlı çalıştı. >>> >>> >>> -- >>> Aşkın Yollu >>> http://askin.ws >>> >>> _______________________________________________ >>> Linux-programlama mailing list >>> [email protected] >>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama >>> Liste kurallari: http://liste.linux.org.tr/kurallar.php >>> >>> >> >> >> -- >> Anıl Özselgin >> http://negaripseylervarya.blogspot.com/ >> >> _______________________________________________ >> Linux-programlama mailing list >> [email protected] >> http://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> > > _______________________________________________ > Linux-programlama mailing list > [email protected] > http://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- Anıl Özselgin http://negaripseylervarya.blogspot.com/
_______________________________________________ Linux-programlama mailing list [email protected] http://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
