Sean/Stuart/Others -
My apologies to the group. I found out why my Clojure code runs slower
than Java.
The Java code uses the setFetchSize() method to retrieve data in
batch:
myResultSet.setFetchSize(1000);
myResultSet.setFetchDirection(ResultSet.FETCH_FORWARD);
Without the above optimization the Java code performs identical to the
Clojure code.
The setFetchSize() makes a huge difference in performance. For
retrieval of 100,000 records I found that it runs x10 faster.
Sean - could you let me know how I can specify the fetch size in
clojure.java.jdbc?
I use the below utility function exec-query to execute SQL queries.
How should I specify the parameters for the prepared statement?
(ns ..
(require [clojure.contrib.sql :as sql])
..)
(defn exec-query
"Execute query"
([query-str bvs]
(sql/with-connection dbconn
(sql/with-query-results recs (into [query-str] bvs)
(doall recs)))))
Thanks
Shoeb
On Aug 7, 10:48 am, Stuart Sierra <[email protected]> wrote:
> Hi Shoeb,
>
> At this point, we probably need more data to give a meaningful answer.
> Different core data structures and different coding conventions can mean
> that "the same code" in Clojure and Java will behave quite differently.
>
> Try profiling your Clojure code with a Java profiler such as VisualVM (free)
> or YourKit (commercial). That will show you exactly which functions are
> taking the most time. Then we may be able to recommend ways to eliminate the
> most expensive calls in the Clojure version.
>
> -Stuart Sierra
> clojure.com
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en