Hello!
In a new latency-sensitive project, I am wondering whether to use SBE-FIX or raw FIX. Logic suggests that SBE-FIX is the way to go, however, is there some form of performance comparison I could read or present to clients? Is there an effective way for such a comparison to be drawn? Essentially, how do we know that one is faster than the other, and by how much?
mfg,
Prateek
Could you elaborate on “raw FIX”? If you mean tag=value encoding then SBE is faster simply because it is a binary encoding compared to tag=value being ASCII.
In general, the application layer is called FIX Latest and it can be encoded in multiple different syntaxes, depending on your requirements (latency, throughput, XML conformance,…):
tag=value
FIX Markup Language (FIXML)
Simple Binary Encoding (SBE)
JavaScript Object Notation (JSON)
FIX Adapted for Streaming (FAST)
Google Protocol Buffers (GPB)
Abstract Syntax Notation 1 (ASN.1)
@p.jain, in order to answer the question you need to establish your criteria for performance based on the application. As @hanno.klein said, you have a choice of binary encodings that are FIX compiant. They all will almost certainly have lower latency in encoding and decoding than the classic tag=value encoding. However, consider whether you also need to optimize network bandwidth, work with user interfaces, etc. The whole protocol stack must work together–the encoding layer must cooperate with session and transport layers as well as meet application needs.
I would shortcut the choices by saying that the choice for high performance, low latency within the FIX standard family is SBE over FIXP (the high performance session layer). SBE and FIXP were both built clearly looking at the high performance proprietary interfaces provided by many trading venues. One of the design considerations for SBE and FIXP is that it had to offer no compromises in terms of performance if it were ever to be adopted for high speed, ultra-low latency (NOTE: I did not say low bandwidth) order matching, market data dissemination, and quote driven markets.
I don’t know of any benchmarks comparing classic FIX (FIX tagvalue encoding) over the FIX tagvalue encoding based FIX4 /FIXT session layer.
Good afternoon,
Anyone has metrics or beanchmarks about performance of FIX and FIX-SBE?
Here is a benchmark project that tests performance of SBE and other encodings: https://github.com/real-logic/benchmarks