2010-07-25 2 views
3

나는 eggdrop이 가장 활동적인/인기있는 봇이라고 생각하며 그것은 tcl로 작성되었다 (위키에 따르면 코어는 C이지만 나는 확인하지 않았다).irc bot은 python/node.js 클론과 비교하여 tcl에 어떻게 쌓여 있습니까?

node.js 또는 Python의 기능을 코딩하는 것이 성능면에서 도움이 될지 궁금합니다. Python과 JS가 틀림없이 더 많은 대중 언어이며 많은 사람들이 tcl에 익숙하지 않기 때문에 더 쉽게 액세스 할 수 있습니다.

그렇다면 성능과 관련하여 일반적으로 tcl과 tcl을 어떻게 쌓을 수 있습니까?

답변

6

의심 스럽지만 eggdrop은 tcl로 작성되지 않았지만 C로 작성되었지만 스크립팅/확장 언어로 tcl을 사용합니다.

eggdrop의 경우 스크립팅 언어로 tcl을 사용하고 Python, Lua, JS 등을 사용하는 것의 성능 차이는 무시할 수 있습니다. 일반적으로 eggdrop은 일반적으로 높지 않습니다 작업을로드하십시오.

정말로 문제가 발생한 경우 질문에 더 구체적인 내용이 필요합니다. 어떤 조건에서 어떤 작업에 대한 성능? 메모리 사용? CPU 효율성? 숨어 있음? 그리고 그 대답은 아마 "측정하고 알아낼"것입니다. 전형적인 eggdrop의 사용을 감안할 때, 몇 분 또는 몇 시간에 한 번 IRC 트리거 명령에 반응하는 데 특히 효율적인 코드는 필요하지 않습니다.

좀 더 일반적인 경우 특정 운영 체제 나 환경에서 다양한 스크립트 언어로 수행되는 특정 알고리즘이나 작업의 벤치 마크 비교를 찾을 수있을 것입니다. 그 시점에서 IRC와는 아무런 관련이 없습니다 또는 eggdrop.

4

조용한 채널에서 어떤 일이 일어날 때까지 기다리는 것 외에 다른 일을하지 않는다면 성능은 거의 무의미합니다. 아마도 BF (네트워크 연결 프리미티브가 추가 된 상태)에이 코드를 작성하고 OK를 수행 할 수 있습니다.

바쁜 많은 채널에서 실행되는 경우 많은 것들이 감시되는 경우가 다릅니다. Tcl의 매우은 이러한 상황에 이상적인 이벤트 구동 IO입니다. (Python은 그렇게 할 수 있지만 루아와 마찬가지로 외부 라이브러리가 필요하다. 나는 JS에 대해 충분히 언급하지 않는다.)

일부 메시지 응답을 위해 중요한 비 IO 바인딩 처리를 수행해야하는 경우, 당신은 스레드가 필요합니다. Tcl과 Python은 모두 스레드를 지원하지만, 완전히 다른 스레딩 모델 (파이썬에는 공유 메모리 모델이 있습니다. 특히 데이터가 클 때 특히 작업 유형을 전달하는 것이 더 쉽습니다. Tcl에는 다음과 같은 아파트 모델이 있습니다. CPU 바운드 코드에서 좋은 성능 향상을 위해 구현에 필요한 잠금의 양을 크게 줄입니다.

어떻게 IRC 봇과 관련이 있습니까? 자, 그것은 모두 당신이 봇에서하고있는 것에 달려 있습니다.

+0

node.js는 Python의 Twisted 및 Ruby의 이벤트 머신을 기반으로하며 매우 이벤트 중심입니다. js : http://nodejs.org/#about에 꽤 유창했기 때문에 node.js 경로를 선택했습니다. 당신의 대답에 감사드립니다. –

관련 문제