Hi all,
I'm testing ACL on acegi with the following scene:
Application Contacts with 10010 contacts.
Where
dianne have access to 4 conctacts
scott have access to 5 contacts
marissa have access to all contacts
When I run getAll() , this (with cache) I obtain following execution times:
dianne : 800 ms
scott: 825 ms
marissa: 250 ~ 285 ms
Because of this diference (marissa between others) I debug
BasicAclEntryAfterInvocationCollectionFilteringProvider method and I
discover that getFilteredObject() occupies 300~350 ms.
So I change CollectionFilterer class to remove object directly from
iterator, like this:
/**
* A filter used to filter Collections.
*/
class CollectionFilterer implements Filterer {
...
private Collection collection;
private Set removeList;
private Iterator collectionIter;
....
....
....
/**
* @see net.sf.acegisecurity.afterinvocation.Filterer#iterator()
*/
public Iterator iterator() {
collectionIter = collection.iterator();
return collectionIter;
}
/**
* @see
net.sf.acegisecurity.afterinvocation.Filterer#remove(java.lang.Object)
*/
public void remove(Object object) {
//removeList.add(object);
//this.collection.remove(object);
collectionIter.remove();
}
}
( I change this only to test purpose )
When I run it again I obtain following execution times:
dianne : 203~344 ms
scott: (don't run with scott)
marissa: with same times
My suggestion is, if we optimize time to remove domain objects we
optimize a lot all process.
Ps: Sorry my english.
Thanks,
Paulo
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_idt12&alloc_id344&op=click
_______________________________________________
Home: http://acegisecurity.sourceforge.net
Acegisecurity-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acegisecurity-developer