Upload
andysh
View
1.890
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Perl 6и высокие нагрузки
Что такое нагрузка?
Что такое нагрузка?
От 1 000 000посетитлей?
Что такое нагрузка?
Или от одногокомпилятора?
Perl 6 не один
Pugs
Rakudo
SMOPKindaPerl6
Elf
Не только script.pl
Исходник .pl
Ассемблер .pir
Байт-код .pbc
Веб-серверов много
Apache CGI
mod_perl
Ваш любимый сервер
Сколькоспособов
оптимизации?
(МНОГО)
Компиляция в байт-код
Компиляция в байт-код
programme.pl
programme.pbc
Компилятор
Виртуальная машина
Компиляция в байт-код
programme.pl
programme.pbc
Компилятор
Виртуальная машина + JIT
Прекомпилированные модули
use Module;
Module.pir Module.pm
Parrot::Embed
(Байткод, исполняемый в Perl 5)
mod_parrot
(Аналог mod_perl, но для байткода)
Nginx / 0W / mod_proxy
(Абсолютно стандартно)
Компиляция в байт-код
Nginx / 0W / mod_proxy
Parrot::Embed
mod_parrot
Прекомпилированные модули
Дизайн Perl 6
Lazy lists
Директива async
Распараллеленные гипероператоры
Многое реализованов самой виртуальной машине
$ time pugs ‐e'say "HL++"'
real 0m0.382suser 0m0.348ssys 0m0.031s
Hello, World++ (Pugs)
$ time perl6 ‐e'say "HL++"'
real 0m0.389suser 0m0.307ssys 0m0.061s
Hello, World++ (Rakudo)
(Одинаково медленно)
$ time wget http://real.perl6.ru
real 0m0.034suser 0m0.003ssys 0m0.001s
Пример с байткодом (VPS Apache CGI)
$ time wget http://november.perl6.ru
real 0m0.027suser 0m0.003ssys 0m0.001s
Пример с кешем (VPS Apache CGI)
(Одинаково быстро)
Перспективы
Улучшенный синтаксический разбор
Новый JIT-компилятор
Новый сборщик мусора