In this article we present CoralLog, a powerful, ultra-low-latency and asynchronous logging library with a very intuitive and non-intrusive API. First we show you how you can use CoralLog for level logging, in other words, to log status messages from your application using the log levels available such as Debug, Trace, Error, etc. Then we show in a follow up article how you can use CoralLog for event sourcing, in other words, to write any kind of message (i.e. data) to a file without adding latency or variance to the critical thread doing the logging. Continue reading
CoralFIX Parser Performance Numbers
In this article we present the performance numbers of CoralFIX when it comes to parsing messages. We measure the time it takes to generate a ByteBuffer
from a FixMessage
and the time it takes to generate a FixMessage
from a ByteBuffer
. For that we use three FIX messages: a simple one without repeating groups, one with a repeating group and lastly one with repeating groups inside repeating groups. Continue reading
FIX clients and servers with CoralFIX and CoralReactor
CoralFIX is fully integrated with CoralReactor so you can code your own ultra-low-latency, ultra-low-variance (i.e. no GC overhead) FIX network clients and servers. In this article we introduce the FixApplicationClient
and the FixApplicationServer
that you can use to code a FIX connection that takes care of all the low-level FIX session details for you, like logon, heartbeats, sequence reset, etc. Continue reading
Getting Started with CoralFIX
This article shows the basics of CoralFIX API when it comes to adding/retrieving values from FixMessages, creating new FIX tags and working with repeating groups. You can also get started quickly by using our SimpleFixApplicationServer
and SimpleFixApplicationClient
as described here. Continue reading
Demultiplexing with CoralQueue for Parallel Processing
In this article we examine how CoralQueue implements a demultiplexer, in other words, a one-producer-to-multiple-consumers queue. We also present throughput numbers for the three types of implementations supported: Atomic, CAS and modulus. Continue reading
Multiplexing with CoralQueue
In this article we analyze how CoralQueue implements a multiplexer to allow multiple producers to send messages to a single consumer. We then present the throughput numbers for different set of configurations with different set of cpu cores. Continue reading
Multicasting with CoralQueue through a Splitter
In this article we show how to use CoralQueue to multicast/broadcast the same message to multiple consumers so each consumer receives and processes all messages. We also present throughput numbers for different configurations, each one using a different set of cpu cores. Continue reading
CoralQueue Throughput Test Explained
In this article we will present the benchmark test used by CoralQueue that shows a throughput between 55 and 65 million messages per second without hyper-threading and between 85 and 95 million messages per second with hyper-threading. If you are interested in the CoralQueue Getting Started article, you can check it here first. Continue reading
Getting Started with CoralQueue
CoralQueue is a ultra-low-latency lock-free and garbage-free queue for inter-thread communication. It can be defined as a batching queue backed up by a circular array (i.e. the ring buffer) filled with pre-allocated transfer objects which uses memory-barriers to synchronize producers and consumers through sequences. Fortunately you don’t have to understand all its intrinsic details to use it. In this article we show how to use CoralQueue to send messages from a producer thread to a consumer thread in a very fast way without producing any garbage. Continue reading
CoralLog vs Log4J Performance Comparison
In this article we compare CoralLog and Log4J in terms of latency and throughput. Benchmarks were conducted against asynchronous Log4J 2.0-rc2 using Disruptor 3.2.1. Continue reading