Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl vs PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

raven



Черный ворон
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я и Advanced_Guest решили провести тест на сравненеи скорости работы Perl и PHP. Я писал на Perl, Advanced_Guest соответственно на PHP. PHP установлен как модуль, mod_perl не использовался. WinXP, 256Mb оперативки, процессор Celeron 1000.
 
Вот те тесты, которые мы провели(тесты проводились на localhost):


Вывод на экран 100000 раз строки Hello World
 
Perl:

Код:
#!/usr/bin/perl
 
use strict;
use Time::HiRes qw(time);
 
my $time = Time::HiRes::time;
print "Content-type: text/html\n\n";
for(1..100000){print "Hello World<br>"; }
my $time1 = Time::HiRes::time - $time;
print "Время выполнения скрипта: $time1";

PHP:

Код:
<?php
set_time_limit(0);
 
$start = microtime();
for($i=1;$i<100000;$i++){
     echo 'Hello world<br>';
}
 
$end = microtime();
$aA = explode(' ',$start.' '.$end);
$duration=($aA[2]+$aA[3])-($aA[0]+$aA[1]);
 
echo $duration;
?>

Время работы:
Perl - 12.648187994957
PHP - 13.702283978462
Perl немного быстрее...


Печатаем в файл 1000000 раз строчку Hello World:
Perl:

Код:
#!/usr/bin/perl
 
use strict;
use Time::HiRes qw(time);
 
my $time = Time::HiRes::time;
print "Content-type: text/html\n\n";
open(FILE,"> test.dat");
for(1..1000000){print FILE "Hello World\n"; }
close(FILE);
my $time1 = Time::HiRes::time - $time;
print "Время выполнения скрипта: $time1";

PHP:

Код:
<?php
set_time_limit(0);
 
$start = microtime();
$handle = fopen ("test.dat", "w");
for($i=1;$i<1000000;$i++){
     fwrite($handle, "Hello World\n");
}
fclose($handle);
 
$end = microtime();
$aA = explode(' ',$start.' '.$end);
$duration=($aA[2]+$aA[3])-($aA[0]+$aA[1]);
 
echo $duration;
?>

Время работы:
Perl - 1.52218902111053
PHP - 5.6922219991684
Perl намного быстрее...


Теперь тест с MySQL. Создаем таблицу с 10000 записями.
Perl:

Код:
#!/usr/bin/perl
 
use DBI;
use strict;
use Time::HiRes qw(time);
 
my $dbdriver  = "mysql";
my $hostname  = "localhost";
my $port      = "3306";
my $username  = "";
my $password  = "";
my $basename  = "test";
 
 
 
print "Content-type: text/html\n\n";
my $time = Time::HiRes::time;
my $dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port",
                     $username, $password) || die print "Can't connect";
 
 
my $sqlstatement = "CREATE TABLE `test` (`id` TINYINT (4) UNSIGNED)";
my $sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Can't prepare statement: $DBI::errstr";
 
for(my $i=1;$i<=10000;$i++)
{
$sqlstatement = "INSERT INTO test (id) VALUES ($i)";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Can't prepare statement: $DBI::errstr";
}
 
$sqlstatement = "DROP TABLE test";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "Can't prepare statement: $DBI::errstr";
 
$dbh->disconnect;
 
my $time1 = Time::HiRes::time - $time;
print "Время выполнения скрипта: $time1";

Версия by batva:

Код:
#!/usr/bin/perl
 
use DBI;
use strict;
use Time::HiRes qw(time);
 
my $dbdriver  = "mysql";
my $hostname  = "localhost";
my $port      = "3306";
my $username  = "";
my $password  = "";
my $basename  = "test";
 
 
 
print "Content-type: text/html\n\n";
my $time = Time::HiRes::time;
my $dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port",
                     $username, $password) || die print "Can't connect";
 
 
$dbh->do("CREATE TABLE `test` (`id` TINYINT (4) UNSIGNED)");
$dbh->do("INSERT INTO test (id) VALUES ($_)") for (1..10000);
$dbh->do("DROP TABLE test");
 
$dbh->disconnect;
 
my $time1 = Time::HiRes::time - $time;
print "Время выполнения скрипта: $time1";

PHP:

Код:
<?php
set_time_limit(0);
 
$start = microtime();
 
mysql_connect('localhost','root','qwe123');
mysql_select_db('test');
mysql_query('CREATE TABLE test (id TINYINT (4) UNSIGNED)');
 
for($i=1;$i<10000;$i++)     mysql_query('insert into test values('.$i.')');
 
mysql_query('drop table test');
 
$end = microtime();
$aA = explode(' ',$start.' '.$end);
$duration=($aA[2]+$aA[3])-($aA[0]+$aA[1]);
 
echo 'PHP:'.$duration;
?>

Время работы:
Perl: 9.14314699172974  
PHP: 10.397187948227
Perl несмотря на мнение, что пхп лучше работает с MySQL опережает.
 
Делайте выводы господа, прошу не флудить и не оффтопить здесь, иначе топик прикроют
 
Можете присылать свои тесты.
 
Внимание! Ищутся люди, которые могут провести следущий тест:

Цитата:
 Во первых время должно учитыватся не скриптом, а тестирующими програмами.  
Во вторых одним вызовом никто не меряет, на каждый скрипт надо минимум свалить по 10.000 запросов с условиями 50,100,200,300 паралельных запросов.

Всего записей: 992 | Зарегистр. 13-08-2002 | Отправлено: 04:55 24-03-2003 | Исправлено: raven, 14:00 26-03-2003
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понимаю, что скорее всего уже не актуально, но провел тесты из шапки на линухе. Скрипты запускал двумя способами: из консоли и через апача.
Железо:
PVI 2400, RAM 256Mb
 
Софт:
ASPLinux 9, Apache 2.0.40, MySQL 3.23.56, PHP 4.2.2, Perl 5.8.0.
PHP стоит как модуль, Perl подключалсся как cgi (при тесте на апаче).
Третий тест на перле проводился в двух вариантах.
 
Вот результаты. Тесты пронумерованы в соответствии с шапкой

Цитата:
 
Bash
 
Test 1:
PHP:  0.078422069549561
Perl: 2.15766406059265
 
Test 2:
PHP: 5.6500709056854
Perl: 4.87607789039612
 
Test 3:
PHP: 0.80018496513367
Perl1: 1.90987491607666
Perl2: 0.92185115814209
 
Apache
 
Test 1:
PHP: 2.8818061351776
Perl: 2.27135801315308
 
Test 2:
PHP: 1.9847772121429
Perl: 0.544479131698608
 
Test 3:
PHP: 0.872878074646
Perl1: 2.27051186561584
Perl2: 1.21358394622803
 

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 19:43 03-08-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl vs PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru