use of net.openhft.lang.values.IntValue$$Native in project HugeCollections-OLD by peter-lawrey.
the class SharedHashMapTest method testAcquireFromMultipleThreads.
public void testAcquireFromMultipleThreads(SharedHashMap<CharSequence, LongValue> map) throws Exception {
CharSequence key = getUserCharSequence(0);
map.acquireUsing(key, new LongValue$$Native());
int iterations = 1000;
int noOfThreads = 10;
CyclicBarrier barrier = new CyclicBarrier(noOfThreads);
Thread[] threads = new Thread[noOfThreads];
for (int t = 0; t < noOfThreads; t++) {
threads[t] = new Thread(new IncrementRunnable(map, key, iterations, barrier));
threads[t].start();
}
for (int t = 0; t < noOfThreads; t++) {
threads[t].join();
}
assertEquals(noOfThreads * iterations, map.acquireUsing(key, new LongValue$$Native()).getValue());
map.close();
}
use of net.openhft.lang.values.IntValue$$Native in project HugeCollections-OLD by peter-lawrey.
the class TCPSocketReplicationIntValueTest method setup.
@Before
public void setup() throws IOException {
value = new IntValue$$Native();
value.bytes(new ByteBufferBytes(ByteBuffer.allocateDirect(4)), 0);
map1 = newTcpSocketShmIntValueString((byte) 1, 8076, new InetSocketAddress("localhost", 8077));
map2 = newTcpSocketShmIntValueString((byte) 2, 8077);
}
use of net.openhft.lang.values.IntValue$$Native in project HugeCollections-OLD by peter-lawrey.
the class SharedHashMapTest method testAcquirePerf.
@Test
@Ignore
public void testAcquirePerf() throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, InterruptedException, ExecutionException {
// int runs = Integer.getInteger("runs", 10);
for (int runs : new int[] { 10, 50, 250, 500, 1000, 2500 }) {
final long entries = runs * 1000 * 1000L;
final SharedHashMap<CharSequence, IntValue> map = getSharedStringIntMap(entries, 1024, 20);
int procs = Runtime.getRuntime().availableProcessors();
// runs > 100 ? procs / 2 : procs;
int threads = procs * 2;
int count = runs > 500 ? runs > 1200 ? 1 : 3 : 5;
// Math.min(procs, runs > 500 ? 8 : 4);
final int independence = 8;
System.out.println("\nKey size: " + runs + " Million entries. ");
for (int j = 0; j < count; j++) {
long start = System.currentTimeMillis();
ExecutorService es = Executors.newFixedThreadPool(procs);
List<Future> futures = new ArrayList<Future>();
for (int i = 0; i < threads; i++) {
final int t = i;
futures.add(es.submit(new Runnable() {
@Override
public void run() {
IntValue value = nativeIntValue();
StringBuilder sb = new StringBuilder();
long next = 50 * 1000 * 1000;
// use a factor to give up to 10 digit numbers.
int factor = Math.max(1, (int) ((10 * 1000 * 1000 * 1000L - 1) / entries));
for (long j = t % independence; j < entries + independence - 1; j += independence) {
sb.setLength(0);
sb.append("us:");
sb.append(j * factor);
map.acquireUsing(sb, value);
long n = value.addAtomicValue(1);
assert n > 0 && n < 1000 : "Counter corrupted " + n;
if (t == 0 && j >= next) {
long size = map.longSize();
if (size < 0)
throw new AssertionError("size: " + size);
System.out.println(j + ", size: " + size);
next += 50 * 1000 * 1000;
}
}
}
}));
}
for (Future future : futures) {
future.get();
}
es.shutdown();
es.awaitTermination(runs / 10 + 1, TimeUnit.MINUTES);
long time = System.currentTimeMillis() - start;
System.out.printf("Throughput %.1f M ops/sec%n", threads * entries / independence / 1000.0 / time);
}
printStatus();
File file = map.file();
map.close();
file.delete();
}
}
use of net.openhft.lang.values.IntValue$$Native in project HugeCollections-OLD by peter-lawrey.
the class SharedHashMapTest method testAcquireWithNullContainer.
@Test
public void testAcquireWithNullContainer() throws Exception {
SharedHashMap<CharSequence, LongValue> map = getSharedMap(10 * 1000, 128, 24);
map.acquireUsing("key", new LongValue$$Native());
assertEquals(0, map.acquireUsing("key", null).getValue());
map.close();
}
use of net.openhft.lang.values.IntValue$$Native in project HugeCollections-OLD by peter-lawrey.
the class SharedHashMapTest method testAcquireAndGet.
public void testAcquireAndGet(SharedHashMap<CharSequence, LongValue> map, int entries) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException {
LongValue value = new LongValue$$Native();
LongValue value2 = new LongValue$$Native();
LongValue value3 = new LongValue$$Native();
for (int j = 1; j <= 3; j++) {
for (int i = 0; i < entries; i++) {
CharSequence userCS = getUserCharSequence(i);
if (j > 1) {
assertNotNull(map.getUsing(userCS, value));
} else {
map.acquireUsing(userCS, value);
}
assertEquals(j - 1, value.getValue());
value.addAtomicValue(1);
assertEquals(value2, map.acquireUsing(userCS, value2));
assertEquals(j, value2.getValue());
assertEquals(value3, map.getUsing(userCS, value3));
assertEquals(j, value3.getValue());
}
}
map.close();
}
Aggregations