2010-07-25 1 views
3

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

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

Итак, как бы они складывали vs tcl в целом, по производительности?

ответ

6

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

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

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

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

4

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

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

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

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

+0

node.js был основан на Pitton's Twisted and Ruby Event Machine и очень управляется событиями. Я выбрал путь node.js, так как я довольно свободно говорю с js: http://nodejs.org/#about. спасибо за Ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^