Каким образом бот irc, написанный на tcl, складывается с клоном python / node.js? - PullRequest
3 голосов
/ 26 июля 2010

Я считаю, что eggdrop - самый активный / популярный бот, и он написан на tcl (и согласно вики ядро ​​- C, но я не подтвердил это).

Мне интересно, будет лилюбое повышение производительности за счет перекодирования его функциональности в node.js или Python, а также делает его более доступным, поскольку Python и JS, возможно, являются более популярными языками, и не многие знакомы с tcl.

Итак, как бы они складывалисьвверх по сравнению с Tcl в целом, с точки зрения производительности?

Ответы [ 2 ]

6 голосов
/ 26 июля 2010

Как вы и подозревали, eggdrop не написано на tcl, оно написано на C, однако оно использует tcl в качестве языка сценариев / расширений.

Я ожидаю, что в случае eggdrop,разница в производительности между использованием tcl в качестве языка сценариев и использованием Python, Lua, JS или практически чего-либо еще будет незначительной, поскольку яичные капли обычно не выполняют задач с высокой нагрузкой.

В случае, если это действительно быловопрос, ваш вопрос будет нуждаться в более подробной информации.Выполнение для какой задачи при каких условиях?Память использовать?КПД процессора?Задержка?И ответ, вероятно, будет "измерить и выяснить".Учитывая типичное использование eggdrop, не требуется особенно эффективный код для ответа на случайную команду запуска IRC раз в несколько минут или часов.

В более общем случае, я уверен, вы могли бы найтисравнительные тесты конкретных алгоритмов или задач, выполняемых различными языками сценариев в конкретных операционных системах или средах, и в этот момент они не будут иметь ничего общего с IRC или eggdrop.

4 голосов
/ 26 июля 2010

Если вы не делаете ничего, кроме ожидания на тихом канале, чтобы что-то произошло, производительность в значительной степени не имеет значения. Возможно, вы могли бы написать это в BF (ну, с добавленными примитивами сетевого подключения) и заставить его работать нормально.

Если вы работаете на множестве занятых каналов, за которыми следят многие вещи, это не так. Tcl очень хорош в управляемых событиями ввода-вывода, что идеально подходит для такой ситуации. (Python может сделать это, но нуждается во внешних библиотеках, как и Lua. Я недостаточно знаю JS, чтобы комментировать там.)

Если вам нужно выполнить значительную обработку без ввода-вывода для некоторых ответов на сообщения, вам нужны потоки. Я знаю, что и Tcl, и Python поддерживают потоки, но с совершенно разными моделями потоков (в Python есть модель с общей памятью, которая облегчает передачу некоторых типов задач, особенно когда данные большие, а в Tcl есть модель квартиры, значительно уменьшает количество блокировок, требуемых в реализации для хорошего увеличения производительности в коде с привязкой к процессору).

Какое отношение это имеет к IRC-ботам? Ну, все зависит от того, что вы делаете в боте.

...