是否可以将Elapsed Time函数转换为Integer?

时间:2012-04-05 22:05:55

标签: string time casting clojure integer

我有以下功能:

(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”

2 个答案:

答案 0 :(得分:2)

不要从字符串中提取此值,而是让我们看一下time macro的来源。

(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#)))

答案 1 :(得分:0)

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

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

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