История изменений
Исправление DRVTiny, (текущая версия) :
можно ли на перле написать чтото что будет выдавать 300-800к пакетов в секунду?
Можно, если приложение распараллелено, т.е. состоит из N процессов, где N зависит от того, как генерируются пакеты и от количества ядер CPU.
Проблема скорее в том, что для Perl это N может быть на порядок больше, чем для Crystal или C.
вроде как говорят он хорошо справляется с многопоточностью
Справляется хорошо, но многопоточность ужасная, поскольку таки да, нормальная многопоточность с интерпретируемым языком программирования - слабо совместимы: как без интерпретатора у вас код в потоке будет выполняться? Правильно, никак! Ну так вот в каждый поток копируется весь код интерпретатора, а заодно ещё и все переменные по необходимости копируются, если не объявлены как :shared. Фактически это тот же CoW как для fork'а, только существенно более тормозной.
ИМХО профит в потоках на Perl абсолютно минимален (возможность использования shared-переменных, меньше накладные расходы ядра ОС на хранение/переключение контекста), а геморроя по сравнению с форком - ощутимо больше.
Зато на Perl отлично пишутся асинхронные приложения, так что AnyEvent::FastPing + обычный fork должны помочь отцу русской демократии :)
Исходная версия DRVTiny, :
можно ли на перле написать чтото что будет выдавать 300-800к пакетов в секунду?
Можно, если приложение распараллелено, т.е. состоит из N процессов, где N зависит от того, как генерируются пакеты и от количества ядер CPU.
Проблема скорее в том, что для Perl это N может быть на порядок больше, чем для Crystal или C.
вроде как говорят он хорошо справляется с многопоточностью
Справляется хорошо, но многопоточность ужасная, поскольку таки да, нормальная многопоточность с интерпретируемым языком программирования - слабо совместимы: как без интерпретатора у вас код в потоке будет выполняться? Правильно, никак! Ну так вот в каждый поток копируется весь код интерпретатора, а заодно ещё и все переменные по необходимости копирутся. Фактически это от же CoW как для fork'а, только существенно более тормозной.
ИМХО профит в потоках на Perl абсолютно минимален (возможность использования shared-переменных, меньше накладные расходы ядра ОС на хранение/переключение контекста), а геморроя по сравнению с форком - ощутимо больше.
Зато на Perl отлично пишутся асинхронные приложения, так что AnyEvent::FastPing + обычный fork должны помочь отцу русской демократии :)