小编chu*_*nsj的帖子

是否有可能通过SBCL(或其他快速Lisp)实现Clojure(或Clojure语法)?

我已经尝试了SBCL和Clojure,发现我喜欢Clojure的语法,但对于我而言,它与SBCL相比非常慢.在SBCL上是否有任何Clojure实现或是否可能实现?


我发现https://github.com/ayrnieu/disclojure可以启发我.:-)

lisp sbcl clojure

6
推荐指数
1
解决办法
1096
查看次数

如何使用 Clojure 读取/解析以下文本?

Text的结构是这样的;

Tag001
 0.1, 0.2, 0.3, 0.4
 0.5, 0.6, 0.7, 0.8
 ...
Tag002
 1.1, 1.2, 1.3, 1.4
 1.5, 1.6, 1.7, 1.8
 ...
Run Code Online (Sandbox Code Playgroud)

文件可以有任意数量的 TagXXX 内容,每个标签可以有任意数量的 CSV 值行。

==== 购买力平价。(对这些东西感到抱歉:-)

更多改进;现在我的Atom笔记本上31842行数据需要1秒左右,比原始代码快7倍。然而,C 版本比这个快 20 倍。

(defn add-parsed-code [accu code]
  (if (empty? code)
    accu
    (conj accu code)))

(defn add-values [code comps]
  (let [values comps
        old-values (:values code)
        new-values (if old-values
                     (conj old-values values)
                     [values])]
    (assoc code :values new-values)))

(defn read-line-components [file]
  (map (fn [line] (clojure.string/split line #","))
       (with-open [rdr (clojure.java.io/reader file)]
         (doall (line-seq rdr))))) …
Run Code Online (Sandbox Code Playgroud)

parsing clojure

1
推荐指数
1
解决办法
2946
查看次数

如何让这个clojure代码运行得更快?

我有一个在Lisp(SBCL)中实现的版本,在0.001秒内运行12个样本.然而,这个版本(在clojure中)需要超过1.1秒.我应该怎么做才能让这个代码像原始的Lisp版本一样快速运行?

为了确保,我的数字不包括启动repl和其他人的时间.并且是从sbcl和clojure的时间函数.(是的,我的笔记本电脑是相当旧的原子为基础的)

而且这个应用程序将用于repl,而不是在单个应用程序中编译,因此在基准测试之前运行一千次似乎没有意义.

哦,fbars是这样的:[[10.0 10.5 9.8 10.1] [10.1 10.8 10.1 10.7] ...],这是股票的开盘 - 高 - 低 - 收盘价格柱.

(defn- build-new-smpl [fmx fmn h l c o]
  (let [fmax (max fmx h)
        fmin (min fmn l)
        fc (/ (+ c fmax fmin) 3.0)
        fcd (Math/round (* (- fc o) 1000))
        frd (Math/round (* (- (* 2.0 c) fmax fmin) 1000))]
    (if (and (> fcd 0) (> frd 0))
      [1 fmax fmin]
      (if (and (< fcd 0) (< frd 0))
        [-1 fmax …
Run Code Online (Sandbox Code Playgroud)

performance clojure

1
推荐指数
1
解决办法
260
查看次数

标签 统计

clojure ×3

lisp ×1

parsing ×1

performance ×1

sbcl ×1