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:
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
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:
- 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.
- 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.
|Operation||Grouper 2.4.0 (ms)||Grouper 2.3.0 without patches (ms)|
|Attribute def name create||32||31|
|Assign role permission||26||26|
|Remove role permission||15||23|
|Attribute def name delete||19||19|
|AttributeDef create (type=perm)||59||77|
|AttributeDef delete (type=perm)||76||82|
|Membership add where member is a group||38||37|
|Membership delete where member is a group||27||26|
|Membership add causes composite||51||50|
|Membership delete causes composite||33||28|
|Group privilege (update) add||18||16|
|Group privilege (update) delete||13||13|
|Stem privilege (create) add||17||16|
|Stem privilege (create) delete||14||14|
|Effective membership (1000) add||21||19|
|Effective membership (1000) delete||15||17|