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 Acegisecurity-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acegisecurity-developer