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
Андрей Шитов
Upcoming SlideShare
Loading in...5
×

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

1,144

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,144
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Perl 6 и высокие нагрузки
  2. 2. Что такое нагрузка?
  3. 3. Что такое нагрузка? От 1 000 000 посетитлей?
  4. 4. Что такое нагрузка? Или от одного компилятора?
  5. 5. Perl 6 не один Pugs Elf Rakudo KindaPerl6 SMOP
  6. 6. Не только script.pl Исходник .pl Ассемблер .pir Байт-код .pbc
  7. 7. Веб-серверов много Apache CGI mod_perl Ваш любимый сервер
  8. 8. Сколько способов оптимизации? (МНОГО)
  9. 9. Компиляция в байт-код
  10. 10. Компиляция в байт-код programme.pl Компилятор programme.pbc Виртуальная машина
  11. 11. Компиляция в байт-код programme.pl Компилятор programme.pbc Виртуальная машина + JIT
  12. 12. Прекомпилированные модули use Module; Module.pir Module.pm
  13. 13. Parrot::Embed (Байткод, исполняемый в Perl 5)
  14. 14. mod_parrot (Аналог mod_perl, но для байткода)
  15. 15. Nginx / 0W / mod_proxy (Абсолютно стандартно)
  16. 16. Компиляция в байт-код Прекомпилированные модули Nginx / 0W / mod_proxy Parrot::Embed mod_parrot
  17. 17. Дизайн Perl 6
  18. 18. Lazy lists Распараллеленные гипероператоры Директива async
  19. 19. Многое реализовано в самой виртуальной машине
  20. 20. Hello, World++ (Pugs) $ time pugs ‐e'say quot;HL++quot;' real   0m0.382s user   0m0.348s sys    0m0.031s
  21. 21. Hello, World++ (Rakudo) $ time perl6 ‐e'say quot;HL++quot;' real   0m0.389s user   0m0.307s sys    0m0.061s
  22. 22. (Одинаково медленно)
  23. 23. Пример с байткодом (VPS Apache CGI) $ time wget http://real.perl6.ru real   0m0.034s user   0m0.003s sys    0m0.001s
  24. 24. Пример с кешем (VPS Apache CGI) $ time wget http://november.perl6.ru real   0m0.027s user   0m0.003s sys    0m0.001s
  25. 25. (Одинаково быстро)
  26. 26. Перспективы Улучшенный синтаксический разбор Новый JIT-компилятор Новый сборщик мусора
  27. 27. __END__ andy@shitov.ru Андрей Шитов
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×