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