I have a vector of maps representing intervals with (start, end) coords in 
one dimension, that are non-overlapping, and sorted. At the moment I'm not 
using a sorted data type, just a vector.

The bottleneck in my code is in searching for intervals that overlap a 
region, like so:

(defn filter-probe-range [probes start end]
  (filter #(and (> (:end %) start) (< (:start %) end)) probes))

My first thought to speed it up was to add a binary search on the vector, 
since it's sorted. However, that is wildly slower than doing a full scan 
with filter. I'm not sure why that is, or how to investigate it. I've 
looked over the section on performance in "The Joy of..", but nothing is 
really popping out. Should I start with jvisualvm? Is there something 
better that would identify what I'm doing that's so slow?

Also wondering if sorted data types would do this for me for free. Is there 
a way to do a binary search on a sorted collection?

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