[英]Can thousands of objects hurt performance
一個典型的例子是RoBrowser如何處理每個傳入/傳出數據包。
首先, RoBrowser為每個數據包使用類,有成千上萬個數據包,並且每次接收或發送時都會實例化它們。
數據包在此處定義。 讓我們以#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;
};
};
我們可以在此處找到實例化的數據包。
pkt = new PACKET.CA.EXE_HASHCHECK();
pkt.HashValue = hash;
Network.sendPacket(pkt);
盡管這是一個僅發送一次的數據包,但請想象這是否是像Walk
或Attack
數據包一樣發送了數千次的數據包。
我不是編程,oop或javascript方面的專家,但我已經讀了一兩本書。
筆記:
問題:
我正在尋找有關此主題(數據包處理)的參考。 如果您知道的話,請告訴。
用這種方法定義對象方法將為每個實例化對象創建新函數-對許多對象不利:-(
使用原型方式時,在原型對象上僅創建一種方法,該方法由所有實例共享:
// 0x204
PACKET.CA.EXE_HASHCHECK = function PACKET_CA_EXE_HASHCHECK() {
this.HashValue = '';
};
PACKET_CA_EXE_HASHCHECK.prototype.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;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.