Monday, 18 May 2009

State of the App

We (Linwood Trading) part way through building a front office trading application. This blog will focus on the challenges and lessons dealing with WPF databinding in an environment with potentially 1000's of updates per second.

Objectives
  • Infrequent garbage collection
    • The main drawback with a garbage collected language like C#/JAVA for a low latency financial application is that the GC can kick in at any time and freeze up all the threads for an indeterminate period. It's impossible to avoid garbage collection altogether but we need to minimise it so it becomes statistically insignificant compared to other lags.
  • Accurate recreation of the 'feel' of market data in the GUI
  • Reasonably rich GUI with backgrounds highlighting price changes
  • Don't overwhelm the Dispatcher thread to keep the GUI responsive
Thoughts
  • Throttle price updates to the DataModel
  • Split core business logic from WPF in seperate Application Domain to prevent GUI triggering garbage collector