Samuel,

thanks for the advices!

On 22. 1. 2015, at 17:35, Samuel Pelletier <sam...@samkar.com> wrote:

>> Precisely what I did. Works well, but is unacceptably slow (even if I cache 
>> unarchived dictionaries in Eos, fetching and unarchiving just the first 
>> time). 
> 
> If your dictionaries are stables and mostly read-only, you may cache then 
> globally using your EO globalID as the key and add some way te refresh them 
> (time, notification of change, ...) That would be way faster and less memory 
> hungry.

As for this, well, I must be missing something fairly obvious, but... how on 
earth could be just anything (globalID-based or not) faster than my cache-in-EO 
code, which (somewhat simplified for better readability) looks essentially like 
this:

class OCSEnterpriseObject extends ERXGenericRecord {
    private NSMutableDictionary archivedObjectsCache=nil
    def unarchivedObjectForKey(String archivedkey) {
        def obj=this.@archivedObjectsCache[archivedkey]
        if (obj==NSKeyValueCoding.Null) return nil
        if (obj==nil) {
            NSData d=storedValueForKey(archivedkey)
            if (d!=nil) obj=Archivation.objectFromArchivedData(d)
            if (this.@archivedObjectsCache==nil) 
this.@archivedObjectsCache=NSMutableDictionary.dictionary
            
this.@archivedObjectsCache[archivedkey]=obj!=nil?obj:NSKeyValueCoding.Null
        }
        obj
    }
    void setUnarchivedObjectForKey(obj,String archivedkey) {
        if (this.@archivedObjectsCache==nil) 
this.@archivedObjectsCache=NSMutableDictionary.dictionary
        
this.@archivedObjectsCache[archivedkey]=obj!=nil?obj:NSKeyValueCoding.Null
        if (obj!=nil) obj=Archivation.archivedDataFromObject(obj)
        takeStoredValueForKey(obj,archivedkey)
    }
}

? I can see memory possibly saved with some sharing if more different EOs 
happen to have same attributes (but it would complicate the code by forcing 
some kind of copy-on-write-if-differs behaviour, and I rather suspect it would 
not be worth the effort), but I simply can't see any possible speedup.

What am I overlooking?

Thanks and all the best,
OC


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

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

Reply via email to