StreamInsight and FIX
As the strategy pricer engine evolves I find myself needing to generate FIX messages. Looking around Google/Bing land it appears that I might want to consider using Rapid Addition’s FIX engine. Rapid Addition’s white paper on how it uses .NET 3.5 to build ultra‐low latency FIX and FAST processing:
“By performing our own storage management using resource pools, RA avoid the latency arising from these GCs.
Some additional techniques RA use to reduce the quantity of garbage that we collect include:
1) Avoiding immutable reference datatypes, these effectively are read only within .NET and once created copies are produced for each modification and the original is discarded.
2) Avoid .NET operations which create temporary objects, for example boxing objects; this creates a copy of the value type as an object on the heap; this then needs to be garbage collected once it is dereferenced.
3) Some .NET’ Framework functions create garbage, and these function calls need to be avoided during steady‐state operation. For instance when you call
System.Globalization.DaylightTime DayLightTime = System.TimeZone.CurrentTimeZone.GetDaylightChanges(2010);
the function creates more garbage than you would expect. The CIL for this operation shows why ‐ the first few lines contain the following
IL_004d: ldarg.1
IL_004e: box System.Int32
IL_0053: stloc.0
It is the boxing operation at IL_004e that creates the unexpected garbage, consequently we do not use this call. RA have a list of similar calls that form a part of their coding standards.”
