3

私はeggdropが最も活発で人気のあるボットであり、tclで書かれていると信じています(wikiによると、コアはCですが、私は確認していません)。

Python と JS は間違いなくより人気のある言語であり、多くの人が tcl に精通していないため、よりアクセスしやすくすることに加えて、node.js または Python でその機能を再コーディングすることでパフォーマンス上の利点があるかどうか疑問に思っています。

では、パフォーマンスに関して、一般的にどのように tcl と比較するのでしょうか?

4

2 に答える 2

6

ご想像のとおり、eggdrop は tcl ではなく C で記述されていますが、スクリプト/拡張言語として tcl を使用しています。

Eggdrop の場合、tcl をスクリプト言語として使用する場合と、Python、Lua、JS、またはその他の事実上すべてを使用する場合のパフォーマンスの違いはごくわずかであると予想されます。

それが本当に問題だった場合、あなたの質問にはより具体的な内容が必要になります。どのような条件下でどのようなタスクのパフォーマンスを発揮するか? メモリ使用?CPU効率?レイテンシー?その答えはおそらく「測定して調べる」でしょう。エッグドロップの典型的な使用法を考えると、数分または数時間ごとに 1 回の時折の IRC トリガー コマンドに応答するのに特に効率的なコードは必要ありません。

より一般的なケースとして、特定のオペレーティング システムまたは環境でさまざまなスクリプト言語によって実行される特定のアルゴリズムまたはタスクのベンチマーク比較を見つけることができると確信しています。

于 2010-07-25T21:37:57.233 に答える
4

何かが起こるのを静かなチャネルで待つ以外に多くのことをしていない場合、パフォーマンスはほとんど関係ありません。おそらく、これをBFに記述して(ネットワーク接続プリミティブを追加して)、正常に動作させることができます。

多くのことが監視されている多くの忙しいチャネルで実行している場合、それは異なります. Tclはイベント ドリブン IO に非常に優れており、この種の状況に最適です。(Python はそれを行うことができますが、Lua と同様に外部ライブラリが必要です。私はそこにコメントするのに十分な JS を知りません。)

一部のメッセージ応答に対して重要な非 IO バウンド処理を行う必要がある場合は、スレッドが必要になります。Tcl と Python の両方がスレッドをサポートしていることは知っていますが、スレッド モデルがまったく異なります (Python には共有メモリ モデルがあり、特にデータが大きい場合にいくつかのタイプのタスクを簡単に渡すことができます。Tcl にはアパートメント モデルがあります。実装で必要なロックの量を大幅に削減し、CPU バウンド コードのパフォーマンスを大幅に向上させます)。

それは IRC ボットにどのように関連していますか? まあ、それはすべて、ボットで何をしているかによって異なります。

于 2010-07-26T00:07:57.870 に答える