Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет rusec ([info]rusec)
@ 2007-11-20 13:43:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Perl vs PHP
Думается, подавляющее большинство программистов, знающих и perl и php со мной согласится.
При общей похожести perl более продуман и писать на нём приятней.
Но.
Подавляющее число вебпроектов пишется на php.
Я, собственно, за него и взялся не найдя ни одной приличной CMS на перле.
Кажется, я понял в чём дело.
Пых работает быстрее, меньше процессор грузит.
Написал простенький тестик:

Perl:

#!/usr/bin/perl

$| = 1;
$\="\n";

use librusec;
use Encode;
use bytes;
use Net::HTTP;

print "Content-type: text/html; charset=utf-8\n\n";

for ($i=0;$i<22;$i++) {
$b = $i*22+33;
$tit = Select("Title FROM libbook WHERE BookId = $b");
$booktit{$b} = $tit;
$bookid{$tit} = $b;
}

foreach $b (keys %booktit) {
$r .= ',' if $r;
$r .= $booktit{$b};
}
print $r;


PHP:


$libmode = 1;
require 'AJAX.php';
set_active('lib');
for ($i=0;$i<22;$i++) {
$b = $i*22+33;
$tit = Sel("Title FROM libbook WHERE BookId = $b");
$booktit{$b} = $tit;
$bookid{$tit} = $b;
}

foreach ($booktit as $t => $b) {
if ($r) $r .= ',';
$r .= $b;
}

print $r;


Вызов:

#!/usr/bin/perl
use Time::HiRes;
use Net::HTTP;

$| = 1;
$\="\n";


for $i (0..99) {
$t1 = Time::HiRes::time();
$type = $i%2 ? 'php':'pl';
my $host = Net::HTTP->new(Host => 'localhost') or die $@;
$host->write_request(GET => 'speed.'.$type, 'User-Agent' => "Mozilla/5.0");
my($code, $mess, %h) = $host->read_response_headers;
my $buf;
my $n = $host->read_entity_body($buf, 1024);
die "read failed: $!" unless defined $n;
$t2 = Time::HiRes::time() - $t1;
$sum{$type} += $t2;
}

print "PHP: $sum{php}, Perl: $sum{pl}";


Запустил несколько раз, чтоб мускульные кэши заполнились.

Результат:


PHP: 0.42498517036438, Perl: 9.19204187393188
PHP: 0.35810399055481, Perl: 10.2584187984467
PHP: 1.05701279640198, Perl: 9.79568386077881
PHP: 0.555223226547241, Perl: 10.5315308570862
PHP: 0.296421051025391, Perl: 16.945974111557
PHP: 0.327699899673462, Perl: 11.2998297214508

Разница заметна

Думаю, причина в том, что перлу надо обрабатывать use (которых в реальной жизни заметно больше, чем в тесте), а за пых это делает APC.
А может еще в чём.


(Читать комментарии) - (Добавить комментарий)


[info]rusec@lj
2007-11-20 19:23 (ссылка)
и еще парочка.
Из серьёзного - только ЖЖ, но мне он как-то никак.

(Ответить) (Уровень выше)


(Читать комментарии) -