Community
Participate
Working Groups
Recent profiling sessions in one of our applications reveal a big performance bottleneck in org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getID(InternalCDOObject, boolean), and more specifically in the following code snippet: if (getDetachedObjects().containsValue(object)) { CDORevisionKey revKey = cleanRevisions.get(object); if (revKey != null) { id = revKey.getID(); } } This bottleneck appears with big commits with lots of changes, where getDetachedObjects() returns a big collection. Any enhacement should be backported to 4.0 too, as long as its technically possible.
Changing the snippet to: CDORevisionKey revKey = cleanRevisions.get(object); if (revKey != null && getDetachedObjects().containsValue(object)) { id = revKey.getID(); } dramatically improves performance (our tests indicates 67% improvement: execution time went down from 874 seconds to 286 seconds). All test-cases pass.
Created attachment 208434 [details] patch v1 Proposed change
I can't apply ;-( Stepper@SOLIDSTATE ~/cdo (master) $ git apply c:/develop/patches/bug_366803_v1.patch fatal: corrupt patch at line 21
Created attachment 208448 [details] patch v2 Eike please try with this one.
Comment on attachment 208448 [details] patch v2 Still wrong patch format.
Created attachment 208450 [details] patch v3 ok, now command line!
Port to 4.0 via bug 366840.
Pushed to Master, commit b4d439314c266fc1c2c137d563f136728067fd8d
Available in R20130213-0014 (4.1.2)