组织JSON对象结构以提高性能

时间:2018-03-07 16:23:17

标签: javascript json node.js lodash

我有一个30k +复杂JS对象的列表。列表中的每个对象都有一个名称属性。

我希望能够尽快通过名称找到对象而无需使用数据库。

关于表现,我想到了3个问题。

查询平面列表 - [{name: 'a'}, {name: 'b'}, {name: 'c'}]或使用嵌套结构查询数据是否更快?{ group1 : [{name: 'a'}, {name: 'b'}], group2: [{name: 'c'}] }

第二个密切相关的问题,查询这个问题会更快:

`[{name: 'a'}, {name: 'b'}, {name: 'c'}]`

或者这个:

{ a: {name: 'a'}, b: {name: 'b'}, c: {name: 'c'} }

第三,原生JS代码更快还是我应该使用lodash(因为我的代码可能性能较差?)是否有任何lib可以帮助解决这个问题 - 无论是JavaScript库还是npm包。

1 个答案:

答案 0 :(得分:2)

1)JS中的对象是字典,意味着obj.x比#34更快(可能是即时);在列表中找到x"。但是,您不会因此而受益于此结构,您需要找到obj.*.name name = "a",以便与在数组/列表中搜索相同。

2)如果在第二个例子中(x: {name: 'x'})x,则密钥始终与' x'相同。字符串(值name)然后"发现"对象中的x与obj['x']一样简单(与obj.x相同),因为它是一个字典。它已经被索引了#34;按键。

3)_.find决不会比自己循环数据更快或更慢,return当你找到了什么时。

使用数据库。你可以使用内存中的JS"搜索"指数。我之前使用的是http://fusejs.io/,但没有使用过那么多数据。