Hi,
I had a closer look at the performance of the myDelete() method. 

Time being spent as percentage of total time in MyDelete():

         % of total time in flush()
1  min   20%  
10 min   45%



After 1 minute the hotspots look like this for flush() (self time = total
time - time being spent in other methods)

method                                                                          
               
self time (%)   invocations
------------------------------------------------------------------------------------------------------------------------------
java.io.DataInputStream.readFully(byte[], int, int)                             
               
913 ms (23%)    1224
java.util.HashMap.getEntry(Object)                                              
               
74.1 ms (1,9%)  48831
java.io.DataOutputStream.write(byte[], int, int)                                
               
50.2 ms (1,3%)  610
java.util.BitSet.get(int)                                                       
               
31.5 ms (0,8%)  107295
org.apache.openjpa.lib.util.concurrent.ReentrantLock.unlock()                   
               
26.5 ms (0,7%)  92485
......
java.io.DataOutputStream.flush()                                                
               
1.7 ms (0%)     4178


after 10 mintes:
method                                                                          
               
self time (%)   invocations
---------------------------------------------------------------------------------------------------------------------------
java.io.DataInputStream.readFully(byte[], int, int)                             
               
7435 ms (5,4%)  21732
java.util.BitSet.get(int)                                                       
               
2920 ms (2,1%)  9607796
org.apache.openjpa.kernel.StateManagerImpl.proxyFields(boolean, boolean)        
               
2459 ms (1,8%)  726936
org.apache.openjpa.kernel.SingleFieldManager.proxy(boolean, boolean)            
               
1671 ms (1,2%)  4114255
org.apache.openjpa.meta.ClassMetaData.getField(int)                             
               
1128 ms (0,8%)  4784295
org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.hasNext()
    
1083 ms (0,8%)  1449895
org.apache.openjpa.kernel.StateManagerImpl.provideField(PersistenceCapable,
FieldManager, int)  978 ms (0,7%)       4128617
......
java.io.DataOutputStream.write(byte[], int, int)                                
               
836 ms (0,6%)   10864
......
java.io.DataOutputStream.flush()                                                
               
2.92 ms (0%)    10864

btw, BitSet.get() is being called in StateManagerImpl.preFlush()

So over time there is a significant increase in the time being spent in
openjpa methods.

kind regards,
Christiaan
-- 
View this message in context: 
http://www.nabble.com/Performance%3A-single-vs-multiple-transactions-tf4272115.html#a12197421
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to