On Apr 8, 2014, at 18:09 , Graham Cox <graham....@bigpond.com> wrote:

> 
> On 9 Apr 2014, at 8:13 am, Rick Mann <rm...@latencyzero.com> wrote:
> 
>> As I write this, I realize that I can't just keep a whole document in 
>> memory; the library (which would be a collection of separate files on disk, 
>> but presented as a unified collection of content in the UI) could be very 
>> large and I'd rather not load in the whole thing. Nevertheless, I think 
>> that's doable.
> 
> 
> I have no comment regarding Core Data, but just a general comment regarding 
> this remark.
> 
> This sounds very much like what I do in both our vector apps to present a 
> collection of library items. These run to thousands of items in multiple 
> libraries, organised into sets called categories, presented through a single 
> UI which allows the user to organise them and use them. We don't load the 
> whole collection into memory, though we do have an in-memory representation 
> of that collection which tracks the location of the original file and an 
> image (and other metadata) representing the item. The UI shows that image 
> which is loaded lazily and on a secondary thread, so the UI remains 
> responsive even when scrolling through thousands of items.
> 
> If the user wants to incorporate a library item into their document, then the 
> "real" item is loaded at the point of use, and occupies memory from then on.
> 
> Point is: we've never run into memory or performance issues with this. I 
> guess at some point stuff could well get paged out but we don't do anything 
> to prevent that. In practice, I've rarely noticed delays caused by that 
> occurring, and typically it's been because of another foreground app needing 
> to page its stuff in. In many cases I would imagine that the image we load (a 
> pdf) is actually larger than the real data - but even then it's still not a 
> practical problem. So far we've seen no scalability issues  up to the order 
> of tens of thousands of items - how large is your library likely to be? 
> 10,000 different vector objects is actually a pretty large number. Again, in 
> practice the way this is used is that a user often filters that down to a 
> small set of items they need for a project (they can build their own 
> categories, collections and "smart" sets based on predicates) - an entire 
> collection can be overwhelming - and stuff that's never browsed never even 
> loads the image and metadata, so the reality of the in-memory copy is that 
> it's actually a small subset of what out there on disk almost all of the 
> time. So yes, it's doable - we've done it and it works fine. Unless your 
> needs are significantly larger than this, I wouldn't sweat the memory 
> requirements at this stage.
> 
> Our scheme doesn't use Core Data. It probably could, but I've never been 
> totally sold on it personally.

Thanks for that data point, Graham. My app is very similar in this regard to 
yours, and that's exactly how I was thinking of treating it.

On Apr 8, 2014, at 17:31 , BareFeetWare <list.develo...@barefeetware.com> wrote:

> One option is to use SQLite. I've been putting together an open source 
> "BFWQuery" library to hopefully simplify the whole thing, by letting you 
> treat a database query just like an array of dictionaries. It uses FMDB 
> (thanks Gus).

Well, if I were to do this, one of the reasons would be to create a text 
representation that could be easily diffed. I took a look at Core Data's XML 
format, and while necessarily verbose, it would work pretty well, until the 
schema changed.

-- 
Rick



Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to