(set! *warn-on-reflection* true)
(set! *unchecked-math* true)

(defn sk [^longs vs ^booleans ss]
  (fn ^long [^long k]
    (if (aget ss k)
      (aget vs k)
      (let [ans (if (< k 56)
                  (- (mod (+ 100003 (- (* k 200003)) (* 300007 k k k))
                          1000000) 500000)
                  (- (mod (+ (aget vs (- k 24))
                             (aget vs (- k 55))) 1000000)
                     500000))]
        (do (aset vs k (long ans))
            (aset ss k true)
            ans)))))

(comment
 (time
  (dorun
   (map (sk (long-array 4000001)
            (boolean-array 4000001))
        (range 100000))))
 )

Not sure if this preserves your code. On my machine running 1.3.0-beta1 this
takes 300-400ms once the JVM has warmed up.

David

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to