请在2024年Clojure调查问卷中分享您的想法!

欢迎!请访问关于页面,了解有关如何操作的更多信息。

0
Clojure
编辑

如果我们使用cat transducer代替调用(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

您只是改变了最后一个可能填充的值的结构,对吧?

这似乎很难相信它能“大幅提高速度”。您在测试什么?

这很有趣,它在几个基准测试中的速度似乎都要快得多...但有时情况可能是相反的...
...