I've done a little comparing to sorted-set as recommended. The following test (in case there is anything bogus about it) is checked in with the java project: http://code.google.com/p/jc-pheap/source/browse/trunk/jc-pheap/src/persistent_heap/testing/test.clj?spec=svn8&r=8
deduping 2,000,000 nums shuffling 1999019 nums ========================================= inserting into sorted set "Elapsed time: 39375.887 msecs" -------------------- popping from front of sorted set "Elapsed time: 15189.0 msecs" ========================================= heap insert "Elapsed time: 15101.546 msecs" ------------------ heap pop "Elapsed time: 59715.796 msecs" ========================================= What I am finding consistently (again, unless the test is bogus) is pretty much expected. *Overall* the excellently implemented sorted-set outperforms the heap I'm working on if you add the all the "insert" times to all the the "pop-front" times. That said, if you want fast inserts, and you're not even sure yet if people want all the elements in sorted order, the heap has advantages ... especially if you're not even planning on referencing elements in the middle of the list (something I do hope to support in some fashion eventually, note). It may also be the case that some smart java/algorithm people could find opportunities to speed up my deleteMin().* a note on deduping:* One difference that doesn't seem to matter performance-wise much is that sorted-set elements are unique. I'm not sure if clojure currently has a data structure (other than considering the heap) that works like a sorted multimap or sorted multiset. Would it be the same to sort a vector in between inserts? That doesn't sound fast, but maybe I should have done that test, too. So, anyway, for this test, I inserted unique elements into both structures so one wouldn't have way more than the other when comparing things like popping. I also sampled from a wide range of numbers, so I probably didn't have to go to such lengths, as it turns out. --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---