вторник, 15 марта 2011 г.

Простое сравнение языков программирования Python PHP

После прочтения mocksoul.livejournal.com решил сравнить PHP и Python на том же коде.

Итак поехали:


IO Test: запись в файл.
test.php
<?php

$fp = fopen('/tmp/iotest', 'wb');
for ($i = 0; $i < 1000000; $i++)
{
fwrite($fp, $i);
}
fclose($fp);

?>

test.py
#!/usr/bin/env python

f = open('/tmp/iotest','wb');
for i in xrange(1000000):
f.write(str(i));
f.close()

Результаты (IO)
php 39.378192 сек.
python 8.538952 сек.
Честно говоря я даже растерялся

Hash Test: создание массивов
test.php
<?php
for ($i = 0; $i < 6000; $i++)
{
$x = array();
for ($j = 0; $j < 1000; $j++)
{
$x[$j] = $i;
$x[$j];
}
}
?>

test.py
#!/usr/bin/env python
for i in range(6000):
x={}
for j in range(1000):
x[j]=i
x[j]

Результаты (Hashing)
php 10.914512 сек.
python 11.578563 сек.

Console Test: Вывод на консоль. В этом тесте я уменьшил число
test.php
<?php
for ($i = 0; $i < 100000; $i++)
{
echo $i . "\n";
}
?>

test.py
#!/usr/bin/env python

for x in xrange(100000):
print x

Результаты (Console)
php 10.52952 сек.
python 10.96296 сек.
List Test: Заполнение списков.
test.php
<?php
for ($i = 0; $i < 3000; $i++)
{
$v = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
for ($j = 0; $j < 1000; $j++)
{
array_push($v, $j);
$v[$j];
}
}
?>

test.py
#!/usr/bin/python
for i in range(3000):
v=['a','b','c','d','e','f','g']
for j in range(1000):
v.append(j)
v[j]

Результаты (List)
php 11.84869 сек.
python 6.69352 сек.
No Test. Просто ничего не делаем.
test.php
<?php

?>

test.py
#!/usr/bin/env python

Результаты (No Test)
php 0.020854 сек.
python 0.000003 сек.
Speed Test: Скорость итераций.
test.php
<?php
for ($i = 0; $i < 20000000; $i++)
{

}
?>

test.py
#!/usr/bin/env python
for x in xrange(20000000):
pass

Результаты (Speed)
php 11.82229 сек.
python 9.83335 сек.

Версии ПО:
PHP 5.3.2
Python 2.6.5
Версия ОС:
Linux 2.6.32-30-generic #59-Ubuntu SMP Tue Mar 1 21:30:21 UTC 2011 i686 GNU/Linux

Получился довольно интересный результат 4 из 6 тестов Python обошел PHP :)

При копировании материалов
ссылка на источник обязательна!


Читать дальше...