簡體   English   中英

數千個對象會損害性能嗎

[英]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);

盡管這是一個僅發送一次的數據包,但請想象這是否是像WalkAttack數據包一樣發送了數千次的數據包。

我不是編程,oop或javascript方面的專家,但我已經讀了一兩本書。

筆記:

  • 與專為瀏覽器編寫的RoBrowser不同,我的服務器將完全在node.js(服務器端)中編寫。
  • RoBrowser是客戶端,因此它僅處理來自1個服務器的請求。 就我而言,它將處理所有連接的客戶端。

問題:

  • 對於服務器體系結構, RoBrowser處理數據包方式是否較慢?
  • 使用類與不使用類之間在性能上有巨大差異嗎?

我正在尋找有關此主題(數據包處理)的參考。 如果您知道的話,請告訴。

用這種方法定義對象方法將為每個實例化對象創建新函數-對許多對象不利:-(

使用原型方式時,在原型對象上僅創建一種方法,該方法由所有實例共享:

// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM