- Timestamp:
- 12/08/13 19:21:50 (8 years ago)
- Location:
- Tests/JAVA/logger
- Files:
-
- 3 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/helpers/AtomicBenchmark.java
r590 r591 3 3 import java.util.concurrent.TimeUnit; 4 4 import java.util.concurrent.atomic.AtomicInteger; 5 import java.util.concurrent.atomic.AtomicLong; 5 6 6 7 import org.openjdk.jmh.annotations.*; … … 21 22 } 22 23 23 //TODO use Unsafe for paiding 24 public AtomicInteger counter; 24 public AtomicLong counter; 25 25 26 26 @Setup 27 27 public void setup() { 28 counter = new Atomic Integer( 0 );28 counter = new AtomicLong( 0 ); 29 29 } 30 30 … … 42 42 @GenerateMicroBenchmark 43 43 @Group( "payload" ) 44 @GroupThreads( 4 ) 44 45 public void backoffAlone() { 45 46 BlackHole.consumeCPU( WRITER_BACKOFF ); … … 49 50 @GenerateMicroBenchmark 50 51 @Group( "writeAlone" ) 51 @GroupThreads( 1)52 public long writerSolo( ) {52 @GroupThreads( 4 ) 53 public long writerSolo(final ThreadState ts) { 53 54 BlackHole.consumeCPU( WRITER_BACKOFF ); 54 return counter.incrementAndGet();55 return ts.counter.incrementAndGet(); 55 56 } 56 57 … … 112 113 return counter.get(); 113 114 } 115 116 @State( Scope.Thread ) 117 public static class ThreadState { 118 public volatile AtomicLong counter = new AtomicLong(); 119 120 } 114 121 /*=============================================================================*/ 115 122 -
Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/helpers/SequencerBenchmark.java
r590 r591 29 29 public static final int WRITER_BACKOFF = Integer.getInteger( "writer-backoff", 7 ); 30 30 31 public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 1024 * 1 024);31 public static final WaitingStrategy WAITING_STRATEGY = new WaitingStrategy.LimitedSpinning( 1024 * 128 ); 32 32 33 33 static { … … 67 67 @GenerateMicroBenchmark 68 68 @Group( "payload" ) 69 @GroupThreads( 4 ) 69 70 public void backoffAlone() { 70 71 BlackHole.consumeCPU( WRITER_BACKOFF ); -
Tests/JAVA/logger/src/main/java/com/db/logger/benchmarks/helpers/UnsafeAtomicBenchmark.java
r590 r591 3 3 import java.lang.reflect.Field; 4 4 import java.util.concurrent.TimeUnit; 5 import java.util.concurrent.atomic.AtomicInteger; 6 import java.util.concurrent.atomic.AtomicLong; 5 7 6 8 import com.db.logger.api.impl.logger.UnsafeHelper; … … 38 40 } 39 41 40 public volatile intcounter;42 public volatile long counter; 41 43 42 44 @Setup … … 57 59 public long incrementAndGet() { 58 60 for(; ; ) { 59 intcurrent = counter;60 intnext = current + 1;61 long current = counter; 62 long next = current + 1; 61 63 if( UNSAFE.compareAndSwapLong( this, counterOffset, current, next ) ) { 62 64 return next; … … 68 70 @GenerateMicroBenchmark 69 71 @Group( "payload" ) 72 @GroupThreads( 4 ) 70 73 public void backoffAlone() { 71 74 BlackHole.consumeCPU( WRITER_BACKOFF ); … … 75 78 @GenerateMicroBenchmark 76 79 @Group( "writeAlone" ) 77 @GroupThreads( 1)78 public long writerSolo( ) {80 @GroupThreads( 4 ) 81 public long writerSolo( final ThreadState ts ) { 79 82 BlackHole.consumeCPU( WRITER_BACKOFF ); 80 return incrementAndGet();83 return ts.counter.incrementAndGet(); 81 84 } 82 85 … … 140 143 /*=============================================================================*/ 141 144 145 @State( Scope.Thread ) 146 public static class ThreadState { 147 public volatile AtomicLong counter = new AtomicLong(); 148 149 } 150 142 151 143 152 public static void main( final String[] args ) throws Exception {
Note: See TracChangeset
for help on using the changeset viewer.