It is indeed waaaaaaaaaaaaaaay slower now than original NSArray/NSSet/NSDictionary (on large maps ~20x than NSMutableDictionary, on large vectors ~100x than NSMutableArray) but that's a tradeoff :). I'll continue to work on speeding it up though.
On Wednesday, November 12, 2014 2:01:07 PM UTC-8, Anton Astashov wrote: > > All objects in Objective-C actually maintain their reference count. This > is how ARC works. So, if there is only one reference to a vector, and we > create a new modified vector with a new element, the changed nodes of the > old vector will set reference count to 0 and will be disposed. > > On Wednesday, November 12, 2014 12:36:36 PM UTC-8, Stephen Wakely wrote: >> >> Interesting. I would definitely look into this if I ever need to do >> another iOS app. >> >> How does it work in a language without garbage collection? If you replace >> an element in a vector and only keep a reference to the new vector there >> will be a stray element there that would need mopping up. Is ARC clever >> enough to recognise this? I wouldn't have thought so unless you maintain a >> reference count for every element within the vector.. Which I don't imagine >> would be particularly efficient. >> >> On Wed, 12 Nov 2014 3:48 PM Anton Astashov <anton.a...@gmail.com> wrote: >> >>> Sorry for resurrecting of such an old post, but I just wrote port of >>> Clojure's data structures in Objective-C - >>> https://github.com/astashov/persistent.objc - hopefully one day someone >>> will find that useful. :) >>> >>> On Sunday, March 31, 2013 5:43:52 AM UTC-7, Matthias Benkard wrote: >>>> >>>> I implemented persistent, array-mapped Patricia trees in C a while ago: >>>> >>>> https://matthias.benkard.de/journal/118 >>>> >>>> It should be relatively straight-forward to build some Objective-C >>>> classes on top of that. (There's a reason the memory management routines >>>> are named bpt_{retain, release, dealloc}. :)) >>>> >>>> You'll just need to do the hashing yourself if you want to build a hash >>>> map. >>>> >>>> Matthias >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@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+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.