【发布时间】:2018-07-14 11:54:27
【问题描述】:
我正在尝试从 Clojure 向量中删除元素:
请注意,我使用的是来自 Kotlin 的 Clojure 操作
val set = PersistentHashSet.create("foo")
val vec = PersistentVector.create("foo", "bar")
val seq = clojure.`core$remove`.invokeStatic(set, vec) as ISeq
val resultVec = clojure.`core$vec`.invokeStatic(seq) as PersistentVector
这相当于以下 Clojure 代码:
(remove #{"foo"} ["foo" "bar"])
代码运行良好,但我注意到从 seq 创建向量非常慢。我写了一个基准测试,结果如下:
| Item count | Remove ms | Remove with converting back to vector ms|
-----------------------------------------------------------------
| 1000 | 51 | 1355 |
| 10000 | 71 | 5123 |
您知道如何将remove 操作产生的seq 转换回vector 而不会造成严重的性能损失吗?
如果不可能,是否有其他方法可以执行remove 操作?
【问题讨论】:
标签: optimization data-structures collections clojure