3 Stimmen

Wie würde sich ein in Tcl geschriebener Ic-Bot gegenüber einem Python/Node.js-Klon schlagen?

Ich glaube, eggdrop ist der aktivste/beliebteste Bot und er ist in Tcl geschrieben (und laut Wiki ist der Kern C, aber ich habe das nicht bestätigt).

Ich frage mich, ob es irgendeinen Leistungsvorteil der Umkodierung es Funktionalität in node.js oder Python, zusätzlich zu machen es zugänglicher, da Python und JS sind wohl mehr populäre Sprachen und nicht viele sind vertraut mit tcl.

Also, wie würden sie im Vergleich zu tcl im Allgemeinen, Leistung-weise stapeln?

6voto

Brook Miles Punkte 636

Wie Sie vermutet haben, ist eggdrop nicht in tcl, sondern in C geschrieben, verwendet aber tcl als Skript-/Erweiterungssprache.

Ich würde erwarten, dass im Falle eines eggdrops der Leistungsunterschied zwischen der Verwendung von tcl als Skriptsprache und der Verwendung von Python, Lua, JS oder praktisch jeder anderen Sprache vernachlässigbar wäre, da eggdrops im Allgemeinen keine Aufgaben mit hoher Last ausführen.

Sollte es sich wirklich um ein Problem handeln, müsste Ihre Frage genauer formuliert werden. Leistung für welche Aufgabe und unter welchen Bedingungen? Speichernutzung? CPU-Effizienz? Latenzzeit? Die Antwort würde wahrscheinlich lauten: "Messen und herausfinden". In Anbetracht der typischen Verwendung eines eggdrop ist kein besonders effizienter Code erforderlich, um alle paar Minuten oder Stunden auf einen gelegentlichen IRC-Auslösebefehl zu reagieren.

Ganz allgemein könnte man sicher Benchmark-Vergleiche bestimmter Algorithmen oder Aufgaben finden, die von verschiedenen Skriptsprachen auf bestimmten Betriebssystemen oder in bestimmten Umgebungen ausgeführt werden, und dann hätte das Ganze nicht wirklich etwas mit IRC oder eggdrop zu tun.

4voto

Donal Fellows Punkte 125686

Wenn Sie nicht viel anderes tun, als in einem ruhigen Kanal auf etwas zu warten, ist die Leistung ziemlich irrelevant. Sie könnten das wahrscheinlich in BF (mit hinzugefügten Netzverbindungsprimitiven) und es funktioniert einwandfrei.

Anders sieht es aus, wenn Sie auf vielen stark frequentierten Kanälen unterwegs sind, auf denen viele Dinge überwacht werden. Tcl's sehr gut im ereignisgesteuerten IO, was für diese Art von Situation ideal ist. (Python kann das auch, braucht aber externe Bibliotheken, ebenso wie Lua. Ich weiß nicht, JS genug, um dort zu kommentieren.)

Wenn Sie für einige Nachrichtenantworten eine umfangreiche nicht-IO-gebundene Verarbeitung durchführen müssen, benötigen Sie Threads. Ich weiß, dass sowohl Tcl als auch Python Threads unterstützen, aber mit völlig unterschiedlichen Threading-Modellen (Python hat ein Shared-Memory-Modell, das es einfacher macht, einige Arten von Aufgaben weiterzugeben, vor allem, wenn die Daten groß sind, und Tcl hat ein Apartment-Modell, das die Menge an Sperren in der Implementierung für eine gute Leistungssteigerung in CPU-gebundenen Code stark reduziert).

Inwiefern ist das für IRC-Bots relevant? Nun, das kommt ganz darauf an, was man im Bot macht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X