FIX has some known deficiencies. Repeating groups is one of them. It can be costly in terms of latency to parse repeating groups inside repeating groups, requiring recursive calls. I prefer protocols that send a first message signaling that N messages will follow with the group info.
FIX is also too verbose consuming too much bandwidth. For that they have come up with FAST which compresses FIX by a great amount but it is mainly used by the exchanges for market data, not order routing.
When we developed our FIX and FAST engine (CoralFIX), we focused on three things:
- It must have a very intuitive and easy-to-use API for fast turnaround when coding the connections to the exchanges.
- It must be low latency, designed from the ground up for speed.
- If it is a Java one it must leave zero garbage behind otherwise the GC will add unacceptable latencies and variance.
Disclaimer: I am one of the developers of CoralFIX.