SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Perl 6
и высокие нагрузки
Что такое нагрузка?
Что такое нагрузка?
   От 1 000 000
   посетитлей?
Что такое нагрузка?
  Или от одного
  компилятора?
Perl 6 не один
Pugs         Elf
Rakudo
          KindaPerl6
   SMOP
Не только 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
Многое реализовано
в самой виртуальной машине
Hello, World++ (Pugs)


$ time pugs ‐e'say quot;HL++quot;'

real   0m0.382s
user   0m0.348s
sys    0m0.031s
Hello, World++ (Rakudo)


$ time perl6 ‐e'say quot;HL++quot;'

real   0m0.389s
user   0m0.307s
sys    0m0.061s
(Одинаково медленно)
Пример с байткодом (VPS Apache CGI)


$ time wget http://real.perl6.ru

real   0m0.034s
user   0m0.003s
sys    0m0.001s
Пример с кешем (VPS Apache CGI)


$ time wget http://november.perl6.ru

real   0m0.027s
user   0m0.003s
sys    0m0.001s
(Одинаково быстро)
Перспективы

Улучшенный синтаксический разбор


Новый JIT-компилятор


Новый сборщик мусора
__END__
               andy@shitov.ru
Андрей Шитов

Weitere ähnliche Inhalte

Mehr von Andrew Shitov

Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6Andrew Shitov
 
Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Andrew Shitov
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Andrew Shitov
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingAndrew Shitov
 
The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of SmartmatchAndrew Shitov
 
Perl 7, the story of
Perl 7, the story ofPerl 7, the story of
Perl 7, the story ofAndrew Shitov
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовAndrew Shitov
 
Как очистить массив
Как очистить массивКак очистить массив
Как очистить массивAndrew Shitov
 
What's new in Perl 5.14
What's new in Perl 5.14What's new in Perl 5.14
What's new in Perl 5.14Andrew Shitov
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14Andrew Shitov
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Andrew Shitov
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty itAndrew Shitov
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an arrayAndrew Shitov
 

Mehr von Andrew Shitov (20)

Perl6 one-liners
Perl6 one-linersPerl6 one-liners
Perl6 one-liners
 
Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6
 
Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)
 
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6
 
AllPerlBooks.com
AllPerlBooks.comAllPerlBooks.com
AllPerlBooks.com
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
 
The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of Smartmatch
 
YAPC::Europe 2013
YAPC::Europe 2013YAPC::Europe 2013
YAPC::Europe 2013
 
Perl 7, the story of
Perl 7, the story ofPerl 7, the story of
Perl 7, the story of
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
 
Как очистить массив
Как очистить массивКак очистить массив
Как очистить массив
 
What's new in Perl 5.14
What's new in Perl 5.14What's new in Perl 5.14
What's new in Perl 5.14
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14
 
Perl6 grammars
Perl6 grammarsPerl6 grammars
Perl6 grammars
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty it
 
Perl 6 by example
Perl 6 by examplePerl 6 by example
Perl 6 by example
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an array
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 

Perl 6 и высокие нагрузки