Socket.IO性能奇怪

时间:2016-04-25 05:11:30

标签: javascript node.js performance socket.io

我一直在运行一些测试,以找出使用最新Socket.IO版本(v1.4.5)发送特定数据的最快方法。

我尝试传递一个对象,一个字符串,一个Uint8Array和一个Buffer。我排除了生成格式化数据的时间。

    var d = Date.now();

    var obj = {"q":"-dgn,pqUsY","u":{"Gm5SP":[1109,1001],"t9sck":[2026],"hpcM8":[1407,841],"DNB7S":[1285,478],"PV7Dt":[2043,986,31]}};
    var objStr = JSON.stringify(obj);
    var objUint8 = new Uint8Array(objStr.length);
    for(var i = 0 ; i < objStr.length; i++)
        objUint8[i] = objStr[i].charCodeAt(i);
    var objBuffer = new Buffer(objUint8);       

    for(var i = 0 ; i < 20000; i++){
        if(num === 0)
            socket.emit('a',obj);               
        if(num === 1)
            socket.emit('a',objStr);                
        if(num === 2)
            socket.emit('a',objUint8);              
        if(num === 3)
            socket.emit('a',objBuffer);             
    }

    console.log(Date.now() - d);

结果:

对象:244ms
                                                                                                                                                                                                                                          字符串:126ms
                                                                                                                                                                                                                              Uint8Array:1292ms
                                                                                                                                                                                                                                          缓冲区:212ms

为什么Uint8Array这么慢?它与NodeJS Buffer真的不太相似吗?缓冲区不应该比字符串更快吗?

0 个答案:

没有答案