Simulate N clients bidding on M items in an 'ebay' style market. Bid values are current highest bid + random value, N(0,1).
Goal - maximize throughput (bids/sec) for max number of clients and items to bid on
Clients run in separate threads and bid 1k times on each item in the system.
User code is 100% thread safe, using 'no lock' & CAS style operations where appropriate.
Classes use concurrent hash map, CAS counters, & Container<Bid>.
Relative performance was determined for different Container<Bid> implementations.
- impl1: blocking priority queue
- impl2: blocking list + 1 peak value
- impl3: concurrent linked queue+1 CAS peak value
Uses Guice for Dependency Injection.
Makes heavy use of generics for entities, keepers, factories, & DAOs.
Performance Peaks
- impl1: 1.6 M bids/sec
- impl2: 2.5 M bids/sec
- impl3: 2.,6 M+ bids/sec
Throughput increased and jitter reduced by setting init capacity of maps to 1k.
see README MEMORY MODEL
Downloads:
0 This Week