一个用TCL编写的IRC机器人与Python/Node.js克隆版相比如何?

3

我相信Eggdrop是最活跃/流行的机器人,它是用TCL编写的(根据维基百科的说法,核心是C语言编写的,但我尚未确认)。

我想知道将其功能重编码为Node.js或Python是否会带来性能上的改进,除了使其更易于访问外,因为Python和JS可以说是更流行的语言,而不是许多人熟悉的TCL。

那么,与TCL相比,它们在性能方面如何表现?

2个回答

6
正如你所怀疑的那样,Eggdrop并非使用Tcl编写,而是使用C编写,但它确实将Tcl用作其脚本/扩展语言。
在Eggdrop这种情况下,使用Tcl作为脚本语言和使用Python、Lua、JS或几乎任何其他语言之间的性能差异应该可以忽略不计,因为Eggdrop通常不执行高负载任务。
如果确实存在问题,您的问题需要具体说明。什么条件下进行什么任务?内存使用情况?CPU效率?延迟?答案可能是“测量并找出”。鉴于Eggdrop的典型用途,响应每隔几分钟或几小时的IRC触发命令并不需要特别有效的代码。
作为更一般的情况,我相信您可以找到特定操作系统或环境上执行的各种脚本语言的特定算法或任务的基准比较,此时它与IRC或Eggdrop关系不大。

4
如果你除了等待静态信道上的事件之外没有其他任务,那么性能就不是很重要。你可能可以用BF编写代码(加入网络连接原语)并使其运行良好。
如果你在许多繁忙的频道上运行,并且有许多事情需要监视,那就不同了。Tcl非常擅长事件驱动的IO,非常适合这种情况。(Python也可以做到,但需要外部库,Lua也一样。我不太了解JS,无法发表评论。)
如果你需要对某些消息响应进行重要的非IO绑定处理,则需要使用线程。我知道Tcl和Python都支持线程,但具有完全不同的线程模型(Python具有共享内存模型,使得传递某些类型的任务变得更容易,特别是当数据很大时,而Tcl具有公寓模型,在CPU绑定代码中大大减少了所需的锁定量,从而提高了性能)。
那对于IRC机器人来说,这与什么相关呢?嗯,这完全取决于你在机器人中要做什么。

Node.js基于Python的Twisted和Ruby的Event Machine,非常事件驱动。我选择使用Node.js路线,因为我对js相当熟练:http://nodejs.org/#about。感谢您的回答。 - meder omuraliev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接