Gaffar Bey öncelikle ilginize teşekkür ederim, dediğinizi zaten pekçok şekilde denemiştim, Aşağıda sizin belirttiğiniz durum da, zaten gönderdiğim koddan daha yavaş çalışıyor.

Ör: ortalama hızlar 2ghz 2,5GB Pardus linux, Python 2.6.3 yüklü laptopumda 240sn. output string olacak şekilde append'siz 290sn. sürüyor.

Bu arada 10000 değil 100000 olacak ayrıca python için son join'li print satırı yorum satırı olacak.

Tabi bu yavaşlık konusu çok ilginç geldiği için paylaşmak istedim.

A.S. Gaffar Durmaz wrote On 12/06/2009 12:22 PM:
sanırım mailler karışmış :)
herneyse Barış beyin dediği "php karşısında python %50 daha yavaş olduğu
ilginç bir durum" konusuna değinmek istiyoyum.
php ile yazdığınız kod içindeki output STRING olarak işlem görüyor.
Python ile yazmış olduğunuz variable output bir list [] olarak
tanımlanmış. yani velhasılı kelam aynı kod değiller...
siz python kodunuz da output = [] yerine output = '' diyerek işe
başlasanız ve outputa ekleme yaparken de append ile değil de
output = output + '%s'%i kullanırsanız. bu yazmış olduğunuz PHP ve
Python kodları aynı şeyi yapıyor olacak ve çok da bi fark olmayacak :D
iyi çalışmalar, kolay gelsin..

bu da gönderdiğiniz python ve php kodu:
#!/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";
?>




On Sun, 2009-12-06 at 12:00 +0200,
linux-programlama-requ...@liste.linux.org.tr wrote:
#!/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()
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php


--
Barış ÇUHADAR <http://baris.bckm.org>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap