Alex CD (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *updated* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNWIxODY1NGU5...
) / Improvement (
https://hibernate.atlassian.net/browse/HHH-14093?atlOrigin=eyJpIjoiNWIxOD...
) HHH-14093 (
https://hibernate.atlassian.net/browse/HHH-14093?atlOrigin=eyJpIjoiNWIxOD...
) Optimize inserted key contains (
https://hibernate.atlassian.net/browse/HHH-14093?atlOrigin=eyJpIjoiNWIxOD...
)
Change By: Alex CD (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
In a transaction where many entities are inserted, the performance when getting an entity
is degrading at:
StatefulPersistenceCotnext.java:
{code:java}
@Override
public boolean wasInsertedDuringTransaction(EntityPersister persister, Serializable id) {
// again, we only really care if the entity is cached
if ( persister.canWriteToCache() ) {
if ( insertedKeysMap != null ) {
final List<Serializable> insertedEntityIds = insertedKeysMap.get(
persister.getRootEntityName() );
if ( insertedEntityIds != null ) {
return insertedEntityIds.contains( id );
}
}
}
return false;
}
{code}
*insertedEntityIds* list may contain more than 10 100.000 entries that affect performance
of *ArrayList.contains* which has *O( n )* complexity.
Please replace *ArrayList* with *HashSet* for better _contains_ performance.
(
https://hibernate.atlassian.net/browse/HHH-14093#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-14093#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100131- sha1:a811519 )