我正在 ClojureScript 应用程序中处理大型 JSON 文件(基本上包含树状结构)。基本上,我遍历了该树结构中的所有元素,这些都是相当多的操作。现在我想知道 Lazy Hash map 处理会导致多少开销。
基本上我:
- 通过 AJAX 加载 JSON 文件
- 使用浏览器将其转换为 JS 对象
JSON.parse
- 用于
js->clj :keywordize-keys true
将其转换为 clojure 结构
JSON 的结构由嵌套列表和哈希映射组成。就像是
{:A-key-a [{:B-key-a 34 :B-key-b [213. 23.4]}
{:B-key-a 34 :B-key-b [213. 23.4]}
...]
:A-key-b [{:someother-a 30 ...}
...]
...}
现在我想知道我是否应该退回到直接使用 JS 对象来获得加速。直觉上我会认为这比 ClojureScript 对象要快,另一方面我不想过早地进行优化,而且我对 ClojureScript 的内部结构了解不多,无法判断延迟评估引入的开销。
我有点想我可以使用.-mykey
访问器语法和谷歌闭包 foreach 函数来重写那个特定的源代码。你怎么看?
我已经在类似的优化主题上看到了提高 ClojureScript 程序的性能,我认为这也意味着这loop .. recur
似乎是一个可行的循环选项。那正确吗?