The following is performance results from Grouper API calls using both Grouper 2.4.0 and Grouper 2.3.0. Each call was made several times and an average was taken. Both Grouper instances were pre-populated with equivalent data before performing this test. Default configuration was used with the exception of database settings in grouper.hibernate.properties. 

Here's a summary of what was pre-populated:

Groups: 126,801
Stems: 105,921
Immediate memberships and privileges: 820,852 in v2.3.0, 588,108 in v2.4.0 (2.4.0 has fewer privileges because it doesn't create unnecessary privileges for GrouperSystem)
Attribute assignments: 125,400
Attribute def names: 41,895
Permissions: 585,200

This data was mostly added by running edu.internet2.middleware.grouper.helper.LoadData. 

Note that these tests were run on a test database server that's shared with other applications so your results will vary...  A single Oracle 11g database instance was used for both Grouper versions. Both versions were installed on separate schemas. The test was executed by:

  1. Using the Grouper API to add any required data for the operation.  For instance, the effective membership add/delete tests required creating a group with 1000 members.
  2. Then using the Grouper API to run the operation several times (mostly either 10 times or 100 times) and taking an average of the time.


OperationGrouper 2.4.0 (ms)Grouper 2.3.0 without patches (ms)
GroupFinder.findByName()22
Group.hasImmediateMember(Subject)2323
Group.hasEffectiveMember(Subject)2019
Group.hasMember(Subject)1616
Group.hasOptin(Subject)1920
Group.getPrivs(Subject)1917
Group.getUpdaters()22
Group.getEffectiveMembers()22
Group.getEffectiveMemberships()22
Group.getImmediateMembers()22
Group.getImmediateMemberships()23
Group.getMembers()22
Group.getMemberships()33
MemberFinder.findBySubject()2222
Member.getEffectiveMemberships()55
Member.getImmediateMemberships()55
Member.getMemberships()32
StemFinder.findByName()11
Stem.getPrivs(Subject)2930
Stem.hasCreate(Subject)1515
Stem.getStemmers()22
Group create131125
Group delete8083
Role create87101
Attribute def name create3231
Assign role permission2626
Remove role permission1523
Attribute def name delete1919
Role delete8681
Stem create5668
Stem delete4949
AttributeDef create (type=perm)5977
AttributeDef delete (type=perm)7682
Membership add4139
Membership delete2017
Membership add where member is a group3837
Membership delete where member is a group2726
Membership add causes composite5150
Membership delete causes composite3328
Group privilege (update) add1816
Group privilege (update) delete1313
Stem privilege (create) add1716
Stem privilege (create) delete1414
Effective membership (1000) add2119
Effective membership (1000) delete1517