[ 
https://issues.apache.org/jira/browse/IGNITE-4908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15956873#comment-15956873
 ] 

Alexander Menshikov commented on IGNITE-4908:
---------------------------------------------

[~amashenkov]

I started work on this issue. I have already written JMH benchmark for these 
Ignite's lock classes: GridSpinReadWriteLock, GridStripedSpinBusyLock, 
GridKeyLock, StripedCompositeReadWriteLock, GridBusyLock and GridSpinBusyLock. 
And for these JDK's lock classes: synchronized, ReentrantReadWriteLock and 
ReentrantLock - for comparison. In benchmarks just increment one long field. 
And for comparation I also added AtomicLong and nonsynchronized version. Result 
for my notebook with 2 real cores + 2 hyper threading cores:
----------------------
With 1 thread:

Benchmark                                                     Mode  Cnt    
Score    Error   Units
//For comparation
JmhGridLocksBenchmark.testNonThreadSafeLong                  thrpt   10  
373,469 ± 10,764  ops/us
JmhGridLocksBenchmark.testAtomicLong                         thrpt   10  
114,843 ±  3,791  ops/us
//JDK locks
JmhGridLocksBenchmark.testReentrantLockLong                  thrpt   10   
39,025 ±  0,641  ops/us
JmhGridLocksBenchmark.testReadWriteLockLong                  thrpt   10   
37,919 ±  0,521  ops/us
JmhGridLocksBenchmark.testSynchronizedLong                   thrpt   10   
34,335 ±  0,815  ops/us
//Ignite locks
JmhGridLocksBenchmark.testGridStripedSpinBusyLockLong        thrpt   10   
37,806 ±  0,560  ops/us
JmhGridLocksBenchmark.testGridBusyLockLong                   thrpt   10   
34,996 ±  0,781  ops/us
JmhGridLocksBenchmark.testGridSpinBusyLockLong               thrpt   10   
29,781 ±  1,175  ops/us
JmhGridLocksBenchmark.testGridSpinReadWriteLockLong          thrpt   10   
24,921 ±  0,716  ops/us
JmhGridLocksBenchmark.testStripedCompositeReadWriteLockLong  thrpt   10   
10,300 ±  0,167  ops/us
JmhGridLocksBenchmark.testGridKeyLockLong                    thrpt   10    
6,752 ±  0,235  ops/us
----------------------
With 2 threads:

Benchmark                                                     Mode  Cnt    
Score    Error   Units
//For comparation
JmhGridLocksBenchmark.testNonThreadSafeLong                  thrpt   10  
652,727 ±  2,569  ops/us
JmhGridLocksBenchmark.testAtomicLong                         thrpt   10   
31,319 ± 11,587  ops/us
//JDK locks
JmhGridLocksBenchmark.testReentrantLockLong                  thrpt   10    
7,602 ±  4,341  ops/us
JmhGridLocksBenchmark.testReadWriteLockLong                  thrpt   10    
8,698 ±  4,474  ops/us
JmhGridLocksBenchmark.testSynchronizedLong                   thrpt   10   
14,623 ±  2,185  ops/us
//Ignite locks
JmhGridLocksBenchmark.testGridStripedSpinBusyLockLong        thrpt   10   
28,999 ±  0,421  ops/us
JmhGridLocksBenchmark.testGridBusyLockLong                   thrpt   10    
7,987 ±  1,918  ops/us
JmhGridLocksBenchmark.testGridSpinBusyLockLong               thrpt   10    
7,361 ±  1,351  ops/us
JmhGridLocksBenchmark.testGridSpinReadWriteLockLong          thrpt   10   
22,250 ±  2,190  ops/us
JmhGridLocksBenchmark.testStripedCompositeReadWriteLockLong  thrpt   10    
3,067 ±  0,391  ops/us
JmhGridLocksBenchmark.testGridKeyLockLong                    thrpt   10    
2,827 ±  0,398  ops/us
----------------------
With 4 threads:

Benchmark                                                     Mode  Cnt    
Score   Error   Units
//For comparation
JmhGridLocksBenchmark.testNonThreadSafeLong                  thrpt   10  
592,226 ± 1,551  ops/us
JmhGridLocksBenchmark.testAtomicLong                         thrpt   10   
25,414 ± 1,831  ops/us
//JDK locks
JmhGridLocksBenchmark.testReentrantLockLong                  thrpt   10   
29,794 ± 0,966  ops/us
JmhGridLocksBenchmark.testReadWriteLockLong                  thrpt   10   
26,638 ± 0,572  ops/us
JmhGridLocksBenchmark.testSynchronizedLong                   thrpt   10   
20,910 ± 0,747  ops/us
//Ignite locks
JmhGridLocksBenchmark.testGridStripedSpinBusyLockLong        thrpt   10   
30,443 ± 1,125  ops/us
JmhGridLocksBenchmark.testGridBusyLockLong                   thrpt   10    
6,323 ± 0,233  ops/us
JmhGridLocksBenchmark.testGridSpinBusyLockLong               thrpt   10    
6,153 ± 0,188  ops/us
JmhGridLocksBenchmark.testGridSpinReadWriteLockLong          thrpt   10   
19,847 ± 4,011  ops/us
JmhGridLocksBenchmark.testStripedCompositeReadWriteLockLong  thrpt   10    
7,132 ± 0,983  ops/us
JmhGridLocksBenchmark.testGridKeyLockLong                    thrpt   10    
2,648 ± 0,652  ops/us
----------------------
With 8 threads:

Benchmark                                                     Mode  Cnt    
Score   Error   Units
//For comparation
JmhGridLocksBenchmark.testNonThreadSafeLong                  thrpt   10  
586,749 ± 2,911  ops/us
JmhGridLocksBenchmark.testAtomicLong                         thrpt   10   
32,270 ± 0,609  ops/us
//JDK locks
JmhGridLocksBenchmark.testReentrantLockLong                  thrpt   10   
34,899 ± 0,607  ops/us
JmhGridLocksBenchmark.testReadWriteLockLong                  thrpt   10   
30,813 ± 0,621  ops/us
JmhGridLocksBenchmark.testSynchronizedLong                   thrpt   10   
28,870 ± 0,514  ops/us
//Ignite locks
JmhGridLocksBenchmark.testGridStripedSpinBusyLockLong        thrpt   10   
27,620 ± 1,437  ops/us
JmhGridLocksBenchmark.testGridBusyLockLong                   thrpt   10    
6,382 ± 0,150  ops/us
JmhGridLocksBenchmark.testGridSpinBusyLockLong               thrpt   10    
6,121 ± 0,314  ops/us
JmhGridLocksBenchmark.testGridSpinReadWriteLockLong          thrpt   10   
21,927 ± 2,192  ops/us
JmhGridLocksBenchmark.testStripedCompositeReadWriteLockLong  thrpt   10    
7,188 ± 0,272  ops/us
JmhGridLocksBenchmark.testGridKeyLockLong                    thrpt   10    
2,604 ± 0,171  ops/us

> Reentrant lock looks much slower that cache locks.
> --------------------------------------------------
>
>                 Key: IGNITE-4908
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4908
>             Project: Ignite
>          Issue Type: Improvement
>          Components: data structures
>    Affects Versions: 1.8
>            Reporter: Andrew Mashenkov
>            Assignee: Alexander Menshikov
>             Fix For: 2.1
>
>
> We should make a benchmark and investigate this issue.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to