2024年Clojure状态调查!中分享您的看法。

欢迎!有关如何工作的更多信息,请参阅关于页面。

0
Clojure
编辑

如果我们使用cattransducer而不是调用(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
嗯,这很有意思,连续几次基准测试好像要快得多……但有时候也正好相反……
...