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:渡された引数の数(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 に答える