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

欢迎!请参阅关于页面以获取有关如何操作的一些更多信息。

0
Clojure
编辑

如果我们使用cat转换器而不是调用(concat p pad),代码会更快

(defn partitionv [n step pad coll]
  (lazy-seq
    (when-let [s (seq coll)]
      (let [p (into [] (take n) s)]
        (if (= n (count p))
          (cons p (partitionv n step pad (nthrest s step)))
          (list (into [] (take n) (concat p pad))))))))

可以更改为

(defn partitionv2 [n step pad coll]
  (lazy-seq
    (when-let [s (seq coll)]
      (let [p (into [] (take n) s)]
        (if (= n (count p))
          (cons p (partitionv n step pad (nthrest s step)))
          (list (into [] (comp cat (take n)) [p pad])))))))
为了回答编辑中的问题 - 实际上是Markdown标准语法。:) https://markdownguide.cn/basic-syntax#code-blocks-1 使用编辑器按钮比手动缩进东西更容易。

1 答案

0

您只是改变了可能填充的最后值的构造,对吗?

这不好相信它会“快得多”。您测试了什么?

by
嗯,这很有趣,连续几次基准测试中似乎快得多... 但是有时情况正好相反...
...