我有一个比较深的内存数据库,我认为我已经找到了最好的实现代码,如果有人知道在lodash中如何更好地执行双重forEach循环或者我使用方法有误,那就太好了。
对象:
smallDB = {
user1:{
permissions:[],
locations:[
{ip:'0.0.0.0',messages:[]},
{ip:'',messages:[]}
]
},
user2:{
permissions:[],
locations:[
{ip:'0.0.0.0',messages:[]},
{ip:'0.0.1.0',messages:[{mid:'a unique id','user':'the sender',message:'the text of the message'}]}
]
}
}
发送消息时,我使用:
ld.forEach smallDB, (a)->
ld.forEach a.locations, (b)->
b.messages.push {mid,user,message}
我只是想确认这是否是将消息添加到smallDB中所有用户及其位置的最佳方式。
jsperf
上有很多循环速度测试。lodash
通常是最快的,因为它能够适应浏览器引擎。在某些情况下,它使用本地的each
,在其他情况下则使用while
循环。Coffeescript 总是使用for
循环,所以它通常表现良好,但不如lodash
。 - hpauljarray
没有被声明为var
。我从你链接的测试中创建了两个测试。第一个在末尾添加了一个新的CoffeeScript测试,其中包含var array = window.array
。这个新测试是最快的。 - Louis