Clojure 2024状态调查中分享您的想法!

欢迎!请参见关于页面获取更多关于这项工作如何运作的信息。

0
 accel ClojureScript

我正在尝试减小我们的js包大小,并且发现由于历史原因,我们将Specter作为一个依赖项。其优化大小为198.23 KB(真的很大)。另外,我没有找到ClojureScript的基准测试,只有一个问题https://github.com/nathanmarz/specter/issues/141

我想知道有人在生产环境中使用它(CLJS)吗?基准测试怎么样?

2 答案

+2
 accel

Hi Aleksandr,
我们在Powernoodle.com的CLJS中用于对象转换和从大型嵌套映射结构中进行子选择。我们使用om/next,我们的状态存储在一个非常复杂的映射中。当您需要对现有数据结构进行更改并返回相同类型结构时,Specter真正闪光,这是不像使用普通clojure函数那样往往返回sequables的。一旦您掌握语法和其使用方式,Specter是一个非常强大的工具,并创建出非常直观和易于阅读的代码。另外,@nathanmarz在Clojure/Specter的Slack频道上非常乐于助人——仅仅因为梦想就能做到这一点——向他表示衷心的感谢。我没有基准测试,但是说实话,没有它,我们的代码将会变得更加复杂,而且所有Clojurists都讨厌复杂的代码;-)
Ian

by
感谢您的回答!我完全同意您关于复杂数据的观点。

我发现我们的项目中使用得不多,只在某些地方使用,现在不确定这是否值得,尤其是在包大小 context 中。

无论如何,我想看看 ClojureScript 的基准测试结果。
+2
by

这不是一个精确的基准测试,但当我将一个基于 walk 的纯 ClojureScript 代码重构为使用 Specter(在一个执行递归转换的代码中)时,UI 从在慢速设备上长达几秒的非响应状态,变成了更快速且在慢速设备上可接受。依我回忆,性能提升了两个数量级(~100ms => ~2ms),这归功于一个定制的 Specter 导航器。

...