0

我有以下功能:

(def elapsedtime (with-out-str (time (run-my-function))))

我想知道是否可以只存储时间的整数值,因为我现在只能存储一个字符串......

有什么建议吗?非常感谢

更新

So I did use this:
  (defmacro nsecs
  [expr]
  `(let [start# (. System (nanoTime))]
     ~expr
     (- (. System (nanoTime)) start#)))

然后修改了这个:

(def elapsedtime (nsecs (run-my-function argument1 argument2)))

但不起作用,我做错了什么?

“线程“AWT-EventQueue-0”中的异常 java.lang.IllegalArgumentException:传递给的 args (1) 数量错误:main$fn--105$nsecs”

4

2 回答 2

2

我们不从字符串中提取这个值,而是看一下time的来源。

(defmacro time
  "Evaluates expr and prints the time it took.  Returns the value of expr."
  {:added "1.0"}
  [expr]
  `(let [start# (. System (nanoTime))
         ret# ~expr]
     (prn (str "Elapsed time: "
               (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs"))
     ret#))

使用它作为新宏的基础,返回用于评估给定表达式的纳秒数。

(defmacro nsecs
  [expr]
  `(let [start# (. System (nanoTime))]
     ~expr
     (- (. System (nanoTime)) start#)))
于 2012-04-05T22:15:49.237 回答
0

DefMacro 解决方案对我不起作用,所以我使用了这个过滤解决方案:

(filter #(#{\0,\1,\2,\3,\4,\5,\6,\7,\8,\9,\.} %) my-double-number)

返回的值正是我想要的。无论如何,感谢您的建议和您的时间。雪儿

于 2012-04-06T17:01:45.327 回答