Search in sources :

Example 1 with IntValue$$Native

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();
}
Also used : LongValue$$Native(net.openhft.lang.values.LongValue$$Native)

Example 2 with IntValue$$Native

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);
}
Also used : ByteBufferBytes(net.openhft.lang.io.ByteBufferBytes) InetSocketAddress(java.net.InetSocketAddress) IntValue$$Native(net.openhft.lang.values.IntValue$$Native) Before(org.junit.Before)

Example 3 with IntValue$$Native

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();
    }
}
Also used : IntValue(net.openhft.lang.values.IntValue) File(java.io.File) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 4 with IntValue$$Native

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();
}
Also used : LongValue(net.openhft.lang.values.LongValue) LongValue$$Native(net.openhft.lang.values.LongValue$$Native) Test(org.junit.Test)

Example 5 with IntValue$$Native

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();
}
Also used : LongValue(net.openhft.lang.values.LongValue) LongValue$$Native(net.openhft.lang.values.LongValue$$Native)

Aggregations

Test (org.junit.Test)5 LongValue$$Native (net.openhft.lang.values.LongValue$$Native)4 IntValue (net.openhft.lang.values.IntValue)3 LongValue (net.openhft.lang.values.LongValue)3 Ignore (org.junit.Ignore)3 ByteBufferBytes (net.openhft.lang.io.ByteBufferBytes)2 IntValue$$Native (net.openhft.lang.values.IntValue$$Native)2 File (java.io.File)1 InetSocketAddress (java.net.InetSocketAddress)1 Random (java.util.Random)1 Before (org.junit.Before)1