Package com.higherfrequencytrading.chronicle

Examples of com.higherfrequencytrading.chronicle.Excerpt


        tsc.useUnsafe(false);
        deleteOnExit(testPath);

        tsc.clear();

        Excerpt excerpt = tsc.createExcerpt();
        excerpt.startExcerpt(42);
        excerpt.writeEnum(AccessMode.EXECUTE);
        excerpt.writeEnum(AccessMode.READ);
        excerpt.writeEnum(AccessMode.WRITE);
        excerpt.writeEnum(BigInteger.ONE);
        excerpt.writeEnum(BigInteger.TEN);
        excerpt.writeEnum(BigInteger.ZERO);
        excerpt.writeEnum(BigInteger.ONE);
        excerpt.writeEnum(BigInteger.TEN);
        excerpt.writeEnum(BigInteger.ZERO);
        excerpt.finish();
        System.out.println("size=" + excerpt.position());

        excerpt.index(0);
        AccessMode e = excerpt.readEnum(AccessMode.class);
        AccessMode r = excerpt.readEnum(AccessMode.class);
        AccessMode w = excerpt.readEnum(AccessMode.class);
        BigInteger one = excerpt.readEnum(BigInteger.class);
        BigInteger ten = excerpt.readEnum(BigInteger.class);
        BigInteger zero = excerpt.readEnum(BigInteger.class);
        BigInteger one2 = excerpt.readEnum(BigInteger.class);
        BigInteger ten2 = excerpt.readEnum(BigInteger.class);
        BigInteger zero2 = excerpt.readEnum(BigInteger.class);
        tsc.close();

        assertSame(AccessMode.EXECUTE, e);
        assertSame(AccessMode.READ, r);
        assertSame(AccessMode.WRITE, w);
View Full Code Here


        IndexedChronicle tsc = new IndexedChronicle(testPath, 16, ByteOrder.nativeOrder(), true);
        tsc.useUnsafe(true);
        deleteOnExit(testPath);

        tsc.clear();
        Excerpt excerpt = tsc.createExcerpt();
        int objects = 5000000;
        long start = System.nanoTime();
        for (int i = 0; i < objects; i++) {
            excerpt.startExcerpt(28);
            excerpt.writeObject(BigDecimal.valueOf(i % 1000));
            excerpt.finish();
        }
        for (int i = 0; i < objects; i++) {
            assertTrue(excerpt.index(i));
            BigDecimal bd = (BigDecimal) excerpt.readObject();
            assertEquals(i % 1000, bd.longValue());
            excerpt.finish();
        }
//        System.out.println("waiting");
//        Thread.sleep(20000);
//        System.out.println("waited");
//        System.gc();
View Full Code Here

    public void testFindRange() throws IOException {
        final String basePath = TMP + "/testFindRange";
        ChronicleTools.deleteOnExit(basePath);

        IndexedChronicle chronicle = new IndexedChronicle(basePath);
        Excerpt appender = chronicle.createExcerpt();
        List<Integer> ints = new ArrayList<Integer>();
        for (int i = 0; i < 1000; i += 10) {
            appender.startExcerpt(8);
            appender.writeInt(0xCAFEBABE);
            appender.writeInt(i);
            appender.finish();
            ints.add(i);
        }
        Excerpt excerpt = chronicle.createExcerpt();
        final MyExcerptComparator mec = new MyExcerptComparator();
        // exact matches at a the start

        mec.lo = mec.hi = -1;
        assertEquals(~0, excerpt.findMatch(mec));
        mec.lo = mec.hi = 0;
        assertEquals(0, excerpt.findMatch(mec));
        mec.lo = mec.hi = 9;
        assertEquals(~1, excerpt.findMatch(mec));
        mec.lo = mec.hi = 10;
        assertEquals(1, excerpt.findMatch(mec));

        // exact matches at a the end
        mec.lo = mec.hi = 980;
        assertEquals(98, excerpt.findMatch(mec));
        mec.lo = mec.hi = 981;
        assertEquals(~99, excerpt.findMatch(mec));
        mec.lo = mec.hi = 990;
        assertEquals(99, excerpt.findMatch(mec));
        mec.lo = mec.hi = 1000;
        assertEquals(~100, excerpt.findMatch(mec));


        // range match near the start
        long[] startEnd = new long[2];

        mec.lo = 0;
        mec.hi = 3;
        excerpt.findRange(startEnd, mec);
        assertEquals("[0, 1]", Arrays.toString(startEnd));

        mec.lo = 21;
        mec.hi = 29;
        excerpt.findRange(startEnd, mec);
        assertEquals("[3, 3]", Arrays.toString(startEnd));

        /*
        mec.lo = 129;
        mec.hi = 631;
View Full Code Here

            @Override
            public void run() {
                try {
                    IndexedChronicle ic = new IndexedChronicle(basePath);
                    ic.useUnsafe(true); // for benchmarks
                    Excerpt excerpt = ic.createExcerpt();
                    for (long i = 1; i <= runs; i += batchSize) {
                        excerpt.startExcerpt(13 * batchSize);
                        for (int k = 0; k < batchSize; k++) {
                            excerpt.writeUnsignedByte('M'); // message type
                            excerpt.writeLong(i); // e.g. time stamp
                            excerpt.writeFloat(i);
                        }
                        excerpt.finish();
                    }
                    ic.close();
                } catch (IOException e) {
                    throw new AssertionError(e);
                }
            }
        }).start();

        IndexedChronicle ic = new IndexedChronicle(basePath);
        ic.useUnsafe(true); // for benchmarks
        Excerpt excerpt = ic.createExcerpt();
        int blocks = 1000000;
        for (long j = 0; j < runs; j += blocks) {
            for (long i = j + 1; i <= j + blocks; i += batchSize) {
                while (!excerpt.nextIndex()) {
                    // busy wait
                }
                for (int k = 0; k < batchSize; k++) {
                    char ch = (char) excerpt.readUnsignedByte();
                    long l = excerpt.readLong();
                    float d = excerpt.readFloat();
                    assert ch == 'M';
                    assert l == i;
                    assert d == (float) i;
                }
                excerpt.finish();
            }
            if (((j + blocks) % 100000000) == 0) {
                long time = System.nanoTime() - start;
                System.out.printf("... Took %.2f to write and read %,d entries%n", time / 1e9, j + blocks);
            }
View Full Code Here

        // 8=FIX.4.1^A9=154^A35=6^A49=BRKR^A56=INVMGR^A34=238^A52=19980604-07:59:56^A23=115686^A28=N^A55=FIA.MI^A54=2^A27=250000^A44=7900.000000^A25=H^A10=231^A
        String basePath = TMP + File.separator + "test-fix.ict";
        deleteOnExit(basePath);
        IndexedChronicle tsc = new IndexedChronicle(basePath, 12);

        Excerpt excerpt = tsc.createExcerpt();
        excerpt.startExcerpt(200);
        appendText(excerpt, 8, "FIX.4.1");
        appendNum(excerpt, 9, 154);
        appendNum(excerpt, 35, 6);
        appendText(excerpt, 49, "BRKR");
        appendText(excerpt, 56, "INVMGR");
        appendNum(excerpt, 34, 238);
        appendText(excerpt, 52, "19980604-07:59:56");
        appendNum(excerpt, 23, 115686);
        appendText(excerpt, 28, IOITransType.N);
        appendText(excerpt, 55, "FIA.MI");
        appendNum(excerpt, 54, 2);
        appendNum(excerpt, 27, 250000);
        appendNum(excerpt, 44, 7900.000000, 6);
        appendText(excerpt, 25, IOIQltyInd.H);
        appendNum(excerpt, 10, 231);
        excerpt.finish();

        assertTrue(excerpt.index(0));
        assertText(excerpt, 8, "FIX.4.1");
        assertNum(excerpt, 9, 154);
        assertNum(excerpt, 35, 6);
        assertText(excerpt, 49, "BRKR");
        assertText(excerpt, 56, "INVMGR");
View Full Code Here

    @Test
    public void testHasNextIndexFail() throws IOException {
        final Chronicle chr = createChronicle("hasNextFail");

        final Excerpt readExcerpt = chr.createExcerpt();
        assertTrue("Read excerpt should have next index", readExcerpt.hasNextIndex());
        assertTrue("It should be possible to move to next index", readExcerpt.nextIndex());
    }
View Full Code Here

    @Test
    public void testHasNextIndexPass() throws IOException {
        final Chronicle chr = createChronicle("hasNextPass");

        final Excerpt readExcerpt = chr.createExcerpt();
        assertTrue("It should be possible to move to next index", readExcerpt.nextIndex());
        assertTrue("Read excerpt should have next index", readExcerpt.hasNextIndex());
    }
View Full Code Here

    @Test
    public void testHasNextIndexIteration() throws IOException {
        final Chronicle chr = createChronicle("testIteration");

        final Excerpt readExcerpt = chr.createExcerpt();
        readExcerpt.index(0);

        while (readExcerpt.hasNextIndex()) {
            assertTrue("I would expect nextIndex() return true after hasNextIndex() returns true",
                    readExcerpt.nextIndex());
        }
    }
View Full Code Here

        final String basePath = TMP + File.separator + name;
        ChronicleTools.deleteOnExit(basePath);
        final IndexedChronicle chr = new IndexedChronicle(basePath);


        final Excerpt excerpt = chr.createExcerpt();

        for (int i = 0; i < NUMBER_OF_ENTRIES; ++i) {
            excerpt.startExcerpt(128);
            excerpt.writeBytes("test");
            excerpt.finish();
        }

        assertEquals("Chronicle should hold all values", NUMBER_OF_ENTRIES, excerpt.size());

        return chr;
    }
View Full Code Here

            @Override
            public void run() {
                try {
                    final IndexedChronicle chronicle = new IndexedChronicle(basePath);
                    chronicle.useUnsafe(true); // for benchmarks.
                    final Excerpt excerpt = chronicle.createExcerpt();
                    for (int i = -warmup; i < repeats; i++) {
                        doSomeThinking();
                        excerpt.startExcerpt(8 + 4 + 4 * consolidates.length);
                        excerpt.writeLong(System.nanoTime());
                        excerpt.writeUnsignedShort(consolidates.length);
                        for (final int consolidate : consolidates) {
                            excerpt.writeStopBit(consolidate);
                        }
                        excerpt.finish();
                    }
                    chronicle.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            private void doSomeThinking() {
                // real programs do some work between messages
                // this has an impact on the worst case latencies.
                Thread.yield();
            }
        });
        t.start();
        //Read
        final IndexedChronicle chronicle = new IndexedChronicle(basePath);
        chronicle.useUnsafe(true); // for benchmarks.
        final Excerpt excerpt = chronicle.createExcerpt();
        int[] times = new int[repeats];
        for (int count = -warmup; count < repeats; count++) {
            do {
            /* busy wait */
            } while (!excerpt.nextIndex());
            final long timestamp = excerpt.readLong();
            long time = System.nanoTime() - timestamp;
            if (count >= 0)
                times[count] = (int) time;
            final int nbConsolidates = excerpt.readUnsignedShort();
            assert nbConsolidates == consolidates.length;
            for (int i = 0; i < nbConsolidates; i++) {
                excerpt.readStopBit();
            }
            excerpt.finish();
        }
        Arrays.sort(times);
        for (double perc : new double[]{50, 90, 99, 99.9, 99.99}) {
            System.out.printf("%s%% took %.2f µs, ", perc, times[((int) (repeats * perc / 100))] / 1000.0);
        }
View Full Code Here

TOP

Related Classes of com.higherfrequencytrading.chronicle.Excerpt

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.