【发布时间】:2014-07-30 15:09:24
【问题描述】:
例如 RoBrowser 如何处理每个传入/传出的数据包。
首先,RoBrowser 为每个数据包使用类,有数千个数据包,每次接收或发送时都会实例化它们。
数据包定义为here。我们以#L2681为例:
// 0x204
PACKET.CA.EXE_HASHCHECK = function PACKET_CA_EXE_HASHCHECK() {
this.HashValue = '';
this.build = function() {
var pkt_len = 2 + 16;
var pkt_buf = new BinaryWriter(pkt_len);
pkt_buf.writeShort(0x204);
pkt_buf.writeBinaryString(this.HashValue, 16);
return pkt_buf;
};
};
我们可以找到正在实例化的数据包here。
pkt = new PACKET.CA.EXE_HASHCHECK();
pkt.HashValue = hash;
Network.sendPacket(pkt);
虽然这是一个只发送一次的数据包,但想象一下,如果这是一个像Walk 或Attack 数据包一样发送数千次的数据包。
我不是编程、oop 或 javascript 方面的专家,但我读过一两本书。
注意事项:
- 与为浏览器编写的 RoBrowser 不同,我的服务器将使用 node.js 编写,纯粹是服务器端。
- RoBrowser 是客户端,因此它只处理来自 1 个服务器的请求。在我的情况下,它将处理所有连接的客户端。
问题:
- 对于服务器架构来说,RoBrowser 处理数据包的方式是否很慢?
- 使用类和不使用类在性能上是否存在巨大差异?
我正在寻找有关此主题(数据包处理)的参考资料。如果你知道的话,请告诉我。
【问题讨论】:
-
取决于...什么是
class?如果你保持它很小,它不会显着变慢。如果您将整个环境注入到一个类中,那就大了。你为什么不简单地做一些基准测试并创建 1kk 对象和 1kk 变量并用简单的函数测试性能?
标签: javascript node.js oop