【问题标题】:Node.js writing to array without blockingNode.js 写入数组而不阻塞
【发布时间】:2012-04-28 18:23:57
【问题描述】:

我是 Node 新手,希望能获得一些关于写入数组的建议。我有高频实时数据进来,每个tick都会写入一个数组。

以异步方式执行此操作是否有益?如果是这样,如何做到这一点?

这是我的代码的精简版 sn-p。当收到新的报价时调用“过滤器”函数。 “storeWindowData”函数然后保存到数组中。我想这可能会在高负载下阻塞?

欣赏任何 cmets。

问候,本。

var window_data = [];
module.exports = {

filter: function (data) {

    this.storeWindowData(timestamp, ticker, content);

    }
},

storeWindowData: function(timestamp, ticker, content){
    // Check if we have seen this ticker before for this minute
    if(window_data[timestamp] !== undefined && window_data[timestamp][0] !== undefined && window_data[timestamp][0] === ticker){
        window_data[timestamp][1] =  window_data[timestamp][1] + ',' + content;
    } else {
        window_data[timestamp] = [ticker, content];
    }
}     

};

【问题讨论】:

    标签: javascript node.js asynchronous nonblocking


    【解决方案1】:

    数组是内存中的原始类型(嗯,内置类型,不是特别原始)。

    在 JavaScript 级别,您究竟是如何异步写入它的?

    在等待写入时会临时存储在哪里?第二个数组? (看到问题了吗?写入该数组会导致两次数组写入,速度会慢一倍。)

    您将不得不识别不同的瓶颈,或者如果这确实是问题(我非常非常确定不是),要么是您的机器处理这个问题的能力太弱,要么您有大量的数据传入。

    【讨论】:

    • 知道了。这是完全有道理的。目前还没有瓶颈,只是想检查它在高负载下是否效率更高。非常感谢,本。
    猜你喜欢
    • 2023-01-27
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多