Как един irc бот, написан на tcl, ще се противопостави на python/node.js клонинг?

Вярвам, че eggdrop е най-активният/популярен бот и е написан на tcl (и според wiki ядрото е C, но не съм потвърдил това).

Чудя се дали ще има някаква полза от производителността от прекодиране на неговата функционалност в node.js или Python, в допълнение към това да я направи по-достъпна, тъй като Python и JS са може би по-популярни езици и не много хора са запознати с tcl.

И така, как биха се справили с tcl като цяло по отношение на производителността?


person meder omuraliev    schedule 25.07.2010    source източник


Отговори (2)


Както подозирахте, eggdrop не е написан на tcl, той е написан на C, но използва tcl като свой скриптов/разширен език.

Бих очаквал, че в случай на eggdrop разликата в производителността между използването на tcl като скриптов език и използването на Python, Lua, JS или почти всичко друго би била незначителна, тъй като eggdrops обикновено не изпълняват задачи с голямо натоварване.

В случай, че наистина е проблем, вашият въпрос ще се нуждае от повече подробности. Изпълнение за каква задача при какви условия? Използване на паметта? Ефективност на процесора? Латентност? И отговорът вероятно ще бъде "измерете и разберете". Като се има предвид типичното използване на eggdrop, не е необходим особено ефективен код, за да се отговори на случаен IRC команда за задействане веднъж на всеки няколко минути или часове.

Като по-общ случай, сигурен съм, че можете да намерите бенчмарк сравнения на конкретни алгоритми или задачи, изпълнявани от различни скриптови езици на конкретни операционни системи или среди, в който момент няма да има нищо общо с IRC или eggdrop.

person Brook Miles    schedule 25.07.2010

Ако не правите нищо друго, освен да чакате на тих канал нещо да се случи, производителността е почти без значение. Вероятно бихте могли да напишете това в BF (е, с добавени примитиви за мрежова връзка) и да го накарате да изпълнява ДОБРЕ.

Ако работите по много натоварени канали с много неща, които се следят, това е различно. Tcl е много добър в IO, управляван от събития, което е идеално за този тип ситуации. (Python може да направи това, но се нуждае от външни библиотеки, както и Lua. Не познавам достатъчно JS, за да коментирам там.)

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

Как това се отнася за IRC ботовете? Е, всичко зависи от това какво правите в бота.

person Donal Fellows    schedule 26.07.2010
comment
node.js е базиран на Twisted на Python и Event Machine на ruby ​​и е много управляван от събития. Избрах да избера пътя на node.js, тъй като владея доста свободно js: nodejs.org/#about . Благодаря за вашият отговор. - person meder omuraliev; 28.11.2010